0

私は現在問題に直面しています。

ユーザーがレベル内でレースできるゲームを作成し、ユーザーがレベルを終了した時間をカウントするストップウォッチがあります。

このコード スニペットを使用して、カウンターをストップウォッチに変換します

 void update(float dt)
{

    if (!paused)
    {
        fcheckbutton+=dt;
        ftimer+=dt;

        if (ftimer >= 0.01f)
        {
            this->timer();
            ftimer = 0.0f;
        }
    }
}



     void timer()
        {
        m_timer++;
        int milliseconds = m_timer%60;
        int seconds = (m_timer/60)%60;
        int minutes = m_timer/3600;

        CCString * P1Time = CCString::createWithFormat("%02d:%02d:%02d", minutes,seconds,milliseconds);

        m_label->setString(P1Time->getCString());
        }

updateメソッドでこの関数を呼び出しました...

問題は、すべてのデバイス (iOS および Android) で、ストップウォッチがさまざまな結果を生成することです...

私のテストケースでは、ユーザーが何も入力しない場合、ユーザーは約 32 秒で失われるはずです....

iOS (iPhone 4) が最も近いもので、ストップウォッチは約 32 秒です

しかし、Android デバイスでは、結果は異なります..

Google Nexus S 28 秒

新しい Google Nexus 7 18 秒

ギャラクシーノート 30秒

ユーザーのストップウォッチの結果に基づくリーダーボードがあるため、すべてのデバイスでストップウォッチを同期することが重要です。

どうすればいいですか?

編集:タイマーメソッドを呼び出すように更新

4

1 に答える 1

0

m_timer 変数をどこで更新しますか? 問題は、一部のデバイスの FPS が低いことだと思います。

于 2013-11-06T12:37:02.227 に答える