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?