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