Ahora estoy limitado en cuanto la linea solo la pude hacer horizontal, a lo que quiero llegar, es pasar 2 puntos de coordenadas Xinicial, Xfinal, Yinicial, Yfinal y se dibuje la misma linea pero entre esos puntos y la verdad que no se me ocurre como hacer para la linea siga con la ondulacion.
Lo estoy trabajando con flex 3 y ActionScript 3
Código :
package
{
import flash.display.*;
import flash.events.TimerEvent;
import flash.filters.BlurFilter;
import flash.geom.*;
import flash.utils.Timer;
import mx.containers.Canvas;
import mx.graphics.*;
public class Linea extends Canvas
{
private var _clip:Canvas;
private var iterador:Number;
private var itera:Number;
private var intervalo:Timer;
private var incrementa:Boolean;
private var filtro:Array;
private var blurFiltro:BlurFilter;
public function Linea()
{
super();
_clip = new Canvas;
_clip.width = 100;
_clip.height = 100;
iterador = new Number(0);
itera = new Number(40);
intervalo = new Timer(10,0);
incrementa = true;
blurFiltro = new BlurFilter(3,3,2);
filtro = new Array();
filtro.push(blurFiltro);
_clip.filters = filtro;
}
public function runOnda():void{
intervalo.addEventListener(TimerEvent.TIMER,render);
intervalo.start();
}
public function render(event:TimerEvent):void{
var sinWavePosition:Number = 100;
var sinWaveColor:uint = 0xFFFFFF;
var waveMultiplier:Number = 10;
var waveStretcher:Number = 10;
var sinPosY:Number = 0;
var cosPosY:Number = 0;
var i:uint;
if(iterador == 20){
incrementa = false;
}else if(iterador == 0){
incrementa = true;
}
if(incrementa){
iterador++;
}else{
iterador--;
}
if(itera<200)
itera++;
graphics.clear();
//grafico la linea desde 100 hasta 200
for(i = 100; i < 200; i++)
{
sinPosY = Math.sin((i+itera) / (waveStretcher+(iterador+4))) * waveMultiplier;
cosPosY = Math.cos((i+itera) / (waveStretcher+(iterador))) * waveMultiplier;
graphics.beginFill(sinWaveColor);
graphics.drawRect(i, sinWavePosition + sinPosY + cosPosY, 4, 2);
graphics.endFill();
}
}
}
}
Esa es mi clase Linea
Y a continuacion mi MXMLApplication
Código :
<?xml version="1.0" encoding="utf-8"?>
<mx:Application width="500" height="500" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Button x="0" y="0" label="Button" buttonDown="main();" />
<mx:Script>
<![CDATA[
import mx.containers.Panel;
import mx.containers.Canvas;
import flash.display.*;
import mx.graphics.*;
public var sp:Sprite;
public var PanelCanvas:Canvas;
public var onda:Linea;
public function main():void{
PanelCanvas = new Canvas();
PanelCanvas.width = stage.stageWidth;
PanelCanvas.height = stage.stageHeight;
this.addChild(PanelCanvas);
onda = new Linea();
PanelCanvas.addChild(onda);
onda.runOnda();
}
]]>
</mx:Script>
</mx:Application>
Uso un timer para darle un efecto de animación en la clase Linea. Alguien me puede dar una mano para hacer que haga lo mismo, pero con 2 pares de coordenas x,y?
