0

2 つのクラスで構成されるストップウォッチを作成しました。まずはストップウォッチモデル。2 つ目は stopwatchView です。ストップウォッチは動いていますが、実際の時間よりも短い時間を示しています。ストップウォッチが実際よりも遅いようです。

ストップウォッチモデル

    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関数を使用する必要があります。たとえば、https://stackoverflow.com/a/12495538/842685を参照してくださいTimer

于 2012-10-16T20:39:40.217 に答える
0

タイマーは完全に正確ではありませんが、何らかの形でフレームレートに依存しているため、1 フレーム時間の倍数である最も近い間隔を見つけます。

アプリケーションの起動時に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 に答える