1

フレームごとに呼び出される update メソッドがあります。更新のたびに、deltaTime が変数に追加されます。

CCDirector を一時停止し、しばらくしてから再開した場合、そのスケジュールされたメソッドの deltaTime は膨大になりますか?

一部のデバイスでは、プレーヤーが iOS デバイスのホーム ボタンを押してから、しばらくしてからアプリを再開し、totalGameTime を保持する変数がまだ追加されているかのようにゲームが追加されているというバグを追跡しているためです。一時停止されていません。

cocos2d スケジューラを使用している場合、これは発生しないはずであるという印象を受けました。

必要な人のためのコード

//[self schedule:@selector(myUpdate:)];

float totalGameTime

-(void) myUpdate:(ccTime) dt {

    totalGameTime += (float) dt;
}
4

2 に答える 2

2

これも発生することに気付きましたが、リリース時のみです。次を追加して修正しました:

[[CCDirector sharedDirector] setNextDeltaTimeZero:YES];

わたしの-(void) applicationDidBecomeActive:(UIApplication *)application

これはおそらくバージョン 2.0 のバグである可能性があります。これは、このバージョンより前に起こったことを覚えていないためです。

于 2012-08-16T09:10:32.480 に答える
1

いいえ。私の知る限り、cocos2d は、一時停止した場合、または OS の中断 (着信など) によりかなりの時間が経過した場合に、デルタ時間をリセットします。

デルタ時間をログに記録することで、簡単にテストすることもできます。必要に応じて、0.1f を超える場合にのみログに記録します。

于 2012-08-16T09:10:46.357 に答える