我从来没有写太多动作脚本,更不用说as3了。 我遇到了一个小问题,想寻求想法或帮助。
我正在尝试模拟一个40x40 LED的LED矩阵,这些LED应当以稍微不同的间隔闪烁,包括淡出。 我将数组用于新的精灵,并将40x40写入屏幕-在此过程中应用各种补间。事件侦听器应该重新启动补间,因此它们将以“ for”循环中设置的各种补间间隔循环。
任务完成:这是我想出的。事件侦听器的数量非常昂贵。 cpu temp会略有增加,但是可以。仍然对制作类似动画的更有效方式感兴趣。请允许我,我不太熟悉as3。 错误似乎是onFinish函数中对补间的调用。应该是e.target.yoyo()而不是数组元素。
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
import flash.display.Sprite;
var stageWidth: Number = stage.stageWidth;
var n: Number = 40; //matrix width and height
var nsquare: Number = (n * n);
var segment: Number = stageWidth / n; //stage diveded by matrix n
var dot_items: Array = [];
var tweens: Array = [];
var basetime: int = 1; //transition base time ..add half basetime random for various transition speed.
for (var l: int = 0; l < n; l++) {
for (var i: int = 0; i < n; i++) {
var count: Number = (l * n) + i;
dot_items[count] = new Sprite();
dot_items[count].graphics.beginFill(0x141496, 1);
dot_items[count].graphics.drawCircle(segment / 2 + (segment * i), segment / 2 + (segment * l), segment / 2);
dot_items[count].graphics.endFill();
addChild(dot_items[count]);
}
}
for (var it: int = 0; it < nsquare; it++) {
var fadeTime: Number = Math.random() * (basetime / 3) + basetime;
tweens[it] = new Tween(dot_items[it], "alpha", Regular.easeInOut, 1, 0, fadeTime, true);
function onFinish(e: TweenEvent): void {
e.target.yoyo();
}
tweens[it].addEventListener(TweenEvent.MOTION_FINISH, onFinish);
}