0

私はcocos2dの初心者です。私にはさまざまなスプライトがあり、それぞれが何らかのアクションを実行してアニメートします。しかし、アクションのシーケンスにロジックを入れようとして、CCCalfFuncロジック(アニメーション、位置の変更など)を使用して実行しようとすると、画面上のすべてのアクションが約1秒間フリーズすることに気付きました。メインスレッドをブロックしていると思いますが、なぜフレームレートが低下しないのでしょうか。

それでも60fpsですが、そのアクションを実行してロジックを実行するたびに、1秒間ブロックし続けます。私の理解では、最悪のシナリオでは、アクションで画面がフリーズするのではなく、フレームレートが低下します。では、この場合、どのような解決策がありますか?スプライトのアニメーションや位置などを更新しているので、GDCは使いたくありませんNSOperation...

ありがとう

4

1 に答える 1

0

@MrBonjourが述べたように、私の問題は、メインスレッドを使用して、キャッシュにないアニメーションをロードしていたことです。GCDを使用すると問題が解決しました。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),^{
      //Load animations here
    dispatch_sync(dispatch_get_main_queue(),^{
       //Update UI, change frames, run animations,etc...
    });
});
于 2012-10-17T11:27:11.563 に答える