Loop TimerEvents? - PullRequest
       20

Loop TimerEvents?

0 голосов
/ 11 сентября 2018

Я пытаюсь создать сценарий, который делает мои экземпляры мувиклипа на сцене (bal1, bal2, bal3, bal4, bal5, bal6) невидимыми, а затем делает их видимыми один за другим, каждый из которых появляется на сцене быстрее, чемпредыдущий.Я создал скрипт, использующий TimerEvents, чтобы достичь этого, но он очень длинный и, вероятно, должен быть способ сделать это короче:

import flash.utils.Timer;
import flash.events.TimerEvent;

var mySpheres:Array = [bal1, bal2, bal3, bal4, bal5, bal6];

for (var i:Number = 0; i < mySpheres.length; i++) {
    mySpheres[i].visible = false;
}

var myTimer1:Timer = new Timer(1024,1);
var myTimer2:Timer = new Timer(512,1);
var myTimer3:Timer = new Timer(256,1);
var myTimer4:Timer = new Timer(128,1);
var myTimer5:Timer = new Timer(64,1);
var myTimer6:Timer = new Timer(32,1);

myTimer1.start();

//number 1

myTimer1.addEventListener(TimerEvent.TIMER, tickTock1);
function tickTock1(e:TimerEvent):void {
    bal1.visible = true;
}

myTimer1.addEventListener(TimerEvent.TIMER_COMPLETE, startNext1);
function startNext1(e:TimerEvent):void {
    myTimer2.start();
}

//number 2

myTimer2.addEventListener(TimerEvent.TIMER, tickTock2);
function tickTock2(e:TimerEvent):void {
    bal2.visible = true;
}

myTimer2.addEventListener(TimerEvent.TIMER_COMPLETE, startNext2);
function startNext2(e:TimerEvent):void {
    myTimer3.start();
}

//number 3

myTimer3.addEventListener(TimerEvent.TIMER, tickTock3);
function tickTock3(e:TimerEvent):void {
    bal3.visible = true;
}

myTimer3.addEventListener(TimerEvent.TIMER_COMPLETE, startNext3);
function startNext3(e:TimerEvent):void {
    myTimer4.start();
}

//number 4

myTimer4.addEventListener(TimerEvent.TIMER, tickTock4);
function tickTock4(e:TimerEvent):void {
    bal4.visible = true;
}

myTimer4.addEventListener(TimerEvent.TIMER_COMPLETE, startNext4);
function startNext4(e:TimerEvent):void {
    myTimer5.start();
}

//number 5

myTimer5.addEventListener(TimerEvent.TIMER, tickTock5);
function tickTock5(e:TimerEvent):void {
    bal5.visible = true;
}

myTimer5.addEventListener(TimerEvent.TIMER_COMPLETE, startNext5);
function startNext5(e:TimerEvent):void {
    myTimer6.start();
}

//number 6

myTimer6.addEventListener(TimerEvent.TIMER, tickTock6);
function tickTock6(e:TimerEvent):void {
    bal6.visible = true;
}

myTimer6.addEventListener(TimerEvent.TIMER_COMPLETE, startNext6);
function startNext6(e:TimerEvent):void {
    stop();
}

Я пытался использовать для циклов, но я могу 'заставить их работать.Это самое дальнее, что я получил, но оно не работает:

import flash.utils.Timer;
import flash.events.TimerEvent;

var mySpheres:Array = [bal1, bal2, bal3, bal4, bal5, bal6];
var myTimers:Array = new Array;

for (var j:Number = 0; j < mySpheres.length; j++) {
    var myTimer:Timer = new Timer(1024, 1);
    myTimers.push(myTimer);
}

for (var k:Number = 0; k < mySpheres.length; k++) {
    myTimers[k].start();
    myTimers[k].addEventListener(TimerEvent.TIMER, tick);
    function tick(e:TimerEvent):void {
        mySpheres[k].visible = true;
    }
}

Обратите внимание, что в этом последнем примере я не знаю, как создать переменную задержку для различных переменных myTimer (здесь все таймерыустановлены с задержкой 1024 мс).У кого-нибудь есть идея сделать эту работу?Если возможно, было бы также очень полезно, если бы я мог манипулировать интервалами, в которых появляются следующие экземпляры, используя переменную, которая меняет свое значение в соответствии с его предыдущим значением.Под этим я подразумеваю то, что в первом (рабочем) примере, который я дал, я вручную установил все задержки таймера как половину предыдущего таймера (1024, 512, 256 и т. Д.).Так что в основном: задержка (новая) = задержка (предыдущая) * 0,5.Интересно, смогу ли я изменить это 0,5 на то, что я хочу.

...