秒表基于显示错误时间AS3的计时器

时间:2012-10-16 20:32:36

标签: actionscript-3

我创建了由两个类组成的秒表。首先是stopwatchModel。第二是秒表视图。我的秒表正在工作,但它显示的时间少于实际持续时间。看起来我的秒表比现实慢。

StopwatchModel

    private function initStopwatchModel():void{
        timer = new Timer(100,0);
        timer.addEventListener(TimerEvent.TIMER,onTimer);
    }

    private function onTimer(e:TimerEvent):void{
        decsec++;
        if (decsec == 10){
            sec++;
            decsec=0;
            if (sec == 60){
            sec = 0;
            min++;
            }
        }
        playerTimeString = min + ":" + sec + ":" + decsec + "0";
        dispatchEvent(new Event("NEW_TIME"));
    }

StopwatchView

    private function initModelEventListeners(){
        _model.addEventListener("NEW_TIME",onNewTime);
    }

    //update textoveho pola, vzdy ked sa zmeni cas
    private function onNewTime(e:Event):void{
        textFieldStopWatch.text = _model.playerTimeString;
    }

感谢您的回答

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

因为定时器不完全准确,但它在某种程度上取决于帧速率,因此它找到的最接近的间隔是多帧到一帧时间。

我建议你在应用程序启动时使用http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/package.html#getTimer()保存getTimer(),然后在计时器上测量它并计算差异 - 这肯定会有用。

问题也记录在http://www.computus.org/journal/?p=22