AS3循环不起作用

fat*_*ike 1 loops actionscript-3 while-loop

我希望在第3个计时器之后创建一个循环,直到程序结束,然后返回第3个计时器,但程序在最后一个计时器后停止.我也试过"for"功能,但没有成功.

这是我的代码:

var i:Number = 0;

disco.visible = false;
palouki.visible = false;
konto.visible = false;
runner.visible = false;
mtext.visible = false;
container.visible = false;
atfa.visible = false;


var playert1: Timer = new Timer(1000, 1);
var playert2: Timer = new Timer(1500, 1);
var playert3: Timer = new Timer(2000, 1);
var playert4: Timer = new Timer(2500, 1);
var playert5: Timer = new Timer(3000, 1);
var playert6: Timer = new Timer(3500, 1);
var playert7: Timer = new Timer(5000, 1);


playert1.addEventListener(TimerEvent.TIMER, timert1F);
playert2.addEventListener(TimerEvent.TIMER, timert2F);
playert3.addEventListener(TimerEvent.TIMER, timert3F);
playert4.addEventListener(TimerEvent.TIMER, timert4F);
playert5.addEventListener(TimerEvent.TIMER, timert5F);
playert6.addEventListener(TimerEvent.TIMER, timert6F);
playert7.addEventListener(TimerEvent.TIMER, timert7F);

playert1.start();
playert2.start();
playert3.start();
playert4.start();
playert5.start();
playert6.start();
playert7.start();


function timert1F(e:TimerEvent):void{
    mtext.visible = true;
    TweenLite.from(mtext, 0.5, {alpha:0});

}

function timert2F(e:TimerEvent):void{
    container.visible = true;
    TweenLite.from(container, 0.5, {alpha:0});
}

while (i<100){

    function timert3F(e:TimerEvent):void{
        disco.visible = true;
        TweenLite.from(disco, 0.5, {alpha:0});
    }

    function timert4F(e:TimerEvent):void{
        runner.visible = true;
        TweenLite.from(runner, 0.5, {alpha:0});
    }
    function timert5F(e:TimerEvent):void{
        palouki.visible = true;
        TweenLite.from(palouki, 0.5, {alpha:0});
    }
    function timert6F(e:TimerEvent):void{
        konto.visible = true;
        TweenLite.from(konto, 0.5, {alpha:0});
    }

    function timert7F(e:TimerEvent):void{
        atfa.visible = true;
        TweenLite.from(atfa, 0.5, {alpha:0});
    }

trace(i);
i++;
}
stop();
Run Code Online (Sandbox Code Playgroud)

Jos*_*sch 5

你的范围完全搞砸了.

范围基础:

  • 在函数或循环中声明的任何对象或函数只能从该函数或循环中访问
  • 对于在类中声明的对象或函数也是如此,除非使用除"private"之外的访问修饰符
  • 循环中声明的任何对象只能在循环的迭代中访问.因此迭代1中声明的对象永远不会在迭代2-100中被访问.

因此,使用这些规则,我们可以在您的代码中指出一个问题:您在循环中声明一个函数并尝试从该循环外部访问它.当您附加这些事件侦听器时,这些功能在技术上并不存在.

现在你的第二个问题.您在该循环中声明了一系列函数100次(这是一个GIGANTIC内存问题,用于记录).声明函数未运行函数.所以你创建了这些函数,但它们实际上从未运行过,这就是为什么它不能按照你期望的方式工作.

如果希望这些函数运行100次,则需要在全局空间中声明循环外的函数,然后调用循环内的函数.但是你在这些函数中使用Tween(通过TweenLite).你的循环将在不到一秒的时间内运行.所以调用它100次绝对没有任何意义,因为它只会导致一个补间实际出现.

您确实需要对范围,循环和补间如何工作进行一些研究.你提供的代码目前是一个令人难以置信的混乱.