0

AS3 でフラッシュ ゲームを開発しました。これは Facebook の Music Challenge に似ています。選択した曲から推測する必要があります。どの曲を再生しているか、スコアは 30 秒間に何曲推測したかに基づいています。このタイムアウトは次のとおりです。 Timer のインスタンスによって処理されます。

すべてがうまく機能しますが、CPUのパフォーマンスを下げることでタイマーが遅くなり、ユーザーがより長くプレイし、より多くの曲を推測し、最終的により高いスコアを獲得できると誰かが指摘しました。システム時間を使用します。問題は、これを行う方法がわからないことです。

どんな助けでも大歓迎です。

4

1 に答える 1

2

短い間隔 (100 ミリ秒程度) の繰り返しタイマーを使用して、new Date().getTime()各ティックをチェックすることができます。デフォルトでは、 newDateは現在のシステム時刻を持ちgetTime()、簡単に比較できるように時間をミリ秒単位で提供します。それを開始時間と比較し、少なくとも 30 秒が経過したらゲームを終了します。何かのようなもの:

import flash.utils.Timer;
import flash.events.TimerEvent;

var ticker:Timer = new Timer(100, 0);
ticker.addEventListener(TimerEvent.TIMER, checkElapsedTime);

var startTime:Number = new Date().getTime();
ticker.start();

function checkElapsedTime(e:TimerEvent):void {

    var now:Number = new Date().getTime();

    if (now - startTime >= 30 * 1000) {

        // End the game and stop the ticker.

        ticker.stop();
        ticker.removeEventListener(TimerEvent.TIMER, checkElapsedTime);
    }

}

タイマーが非常に遅い場合は、明らかに多少の遅れが生じるため、回答が送信されたときに同じチェックを実行し、期限が過ぎた場合は無視する場合に備えて.

最後に、ユーザーがシステム クロックを変更したかどうかを確認するには、以前のクロックを保存nowし、新しいクロックnowが常に大きいことを確認します。

于 2013-02-22T23:19:27.933 に答える