我希望在第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();
答案 0 :(得分:5)
你的范围完全搞砸了。
范围基础:
因此,使用这些规则,我们可以在您的代码中指出一个问题:您在循环中声明一个函数并尝试从该循环外部访问它。当您附加这些事件侦听器时,这些功能在技术上并不存在。
现在你的第二个问题。您在该循环中声明了一系列函数100次(这是一个GIGANTIC内存问题,用于记录)。声明函数未运行函数。所以你创建了这些函数,但它们实际上从未运行过,这就是为什么它不能按照你期望的方式工作。
如果希望这些函数运行100次,则需要在全局空间中声明循环外的函数,然后调用循环内的函数。但是你在这些函数中使用Tween(通过TweenLite)。你的循环将在不到一秒的时间内运行。因此,调用100次将完全没有任何效果,因为它只会导致实际出现一个补间。
您确实需要对范围,循环和补间如何工作进行一些研究。你提供的代码目前是一个令人难以置信的混乱。