0

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

秒表模型

    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"));
    }

秒表查看

    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;
    }

谢谢你的答案

4

2 回答 2

0

您应该使用getTimer函数,而不是Timer。参见例如https://stackoverflow.com/a/12495538/842685

于 2012-10-16T20:39:40.217 回答
0

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

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

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

于 2012-10-16T20:40:49.897 回答