Actionscript 3 动作脚本-创建计数器10秒
我有一个从父级调用的函数,包含电影剪辑的函数被导入,当我调用该函数时,我的计数器似乎永远不起作用,我以小时:分钟:秒为单位显示此计数器代码如下:Actionscript 3 动作脚本-创建计数器10秒,actionscript-3,Actionscript 3,我有一个从父级调用的函数,包含电影剪辑的函数被导入,当我调用该函数时,我的计数器似乎永远不起作用,我以小时:分钟:秒为单位显示此计数器代码如下: var seconds:int = 10000; function startTimeLeftCounter():void{ trace("start"); txt_timeLeftText.visible = true; txt_timeLeftCounter.visible = true; seconds = seconds - 1000; t
var seconds:int = 10000;
function startTimeLeftCounter():void{
trace("start");
txt_timeLeftText.visible = true;
txt_timeLeftCounter.visible = true;
seconds = seconds - 1000;
trace(seconds);
txt_timeLeftCounter.text = (Math.floor(seconds/60)) + ":" + (seconds % 60 >= 10 ? "": "0") + ":" + (seconds % 60);
if(seconds > 0){
setTimeout(startTimeLeftCounter, 1000);
}else{
txt_timeLeftText.visible = false;
txt_timeLeftCounter.visible = false;
trace("finish");
}
}
我直接得到的跟踪输出是(跟踪(秒)):
您只看到此跟踪的原因很简单:“秒”=0或未定义。 我没有看到调用函数startTimeLeftCounter()的所有代码和位置,但我可以假设问题在于另一个作用域中的变量“seconds”或由gc清理 我在本地测试了您的代码:
private function testTimer():void {
var seconds:int = 10000;
function startTimeLeftCounter():void {
trace("start");
seconds = seconds - 1000;
trace(seconds);
if(seconds > 0) {
setTimeout(startTimeLeftCounter, 1000);
} else {
trace("finish");
}
}
startTimeLeftCounter();
}
并有下一个跟踪:
[trace] start
[trace] 9000
[trace] start
[trace] 8000
...
[trace] start
[trace] 1000
[trace] start
[trace] 0
[trace] finish
谢谢@Crabar,我从来没有听说过你可以嵌套函数。
[trace] start
[trace] 9000
[trace] start
[trace] 8000
...
[trace] start
[trace] 1000
[trace] start
[trace] 0
[trace] finish