次のようなグラデーションラインを描画し、アニメーション化することができます
package
{
import flash.display.GradientType;
import flash.display.InterpolationMethod;
import flash.display.SpreadMethod;
import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Matrix;
public class GradientLine extends Sprite
{
private var position:Number = 0;
public function GradientLine()
{
addEventListener(Event.ENTER_FRAME, drawLine);
}
private function drawLine(e:Event):void
{
graphics.clear();
var m:Matrix = new Matrix();
m.createGradientBox(stage.stageWidth, stage.stageHeight, 0, position, 0);
position -= 10;//move from right to left by 10px
graphics.lineStyle(2);
graphics.lineGradientStyle(GradientType.LINEAR, [ 0xFF0000, 0xFFCC00, 0x0000CC ], [ 1, 1, 1 ], [ 0, 128, 255 ], m, SpreadMethod.REFLECT, InterpolationMethod.RGB, position);
graphics.moveTo(0, 250);
graphics.lineTo(stage.stageWidth, 250);
}
}
}
ステージが利用できるようにする必要があります。 createGradientBox(幅、高さ)を必要なサイズに設定できます。 SpreadMethod.REFLECTによってグラデーションが反映されるため、SpreadMethod.REPEATを試してみるとよいでしょう。
+1これは確かに動作します、ありがとう。残念ながら、Erkmeneが指摘したように、それは本当に高価です。ラインがアニメーション化されている間にマウスをステージの周りに動かすだけで、少し遅れを生み出すことができました。 – TheDarkIn1978