Светодиодная матрица моделирования - PullRequest
0 голосов
/ 03 октября 2018

Я никогда не пишу много ActionScript, не говоря уже о as3.Я столкнулся с небольшой проблемой и хотел бы попросить идеи или помощь.

Я пытаюсь смоделировать матрицу светодиодов 40x40 светодиодов, которые должны мигать с немного разными интервалами, включая затухание.Я использую массив для новых спрайтов и выписываю 40x40 на экран - применяя различные подростки в процессе.Предполагается, что слушатели событий перезапускают анимацию, поэтому они будут зацикливаться с различными интервалами анимации, установленными в цикле «for».

задача выполнена: это то, что я придумал.это довольно затратно с количеством eventlisteners.Темп процессора немного увеличится, но это работает.до сих пор интересует более эффективный способ сделать похожую анимацию.Пожалуйста, дайте мне знать, что я не очень знаком с as3.Похоже, ошибкой был вызов tween в функции 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);
}
...