0

n't私のゲーム シーンは、replaceScene を使用してレベル選択シーンから実行され、レベル番号が渡されます。ゲーム レイヤーは plist からデータをロードし、ワールド空間にオブジェクトを作成します (box2d ボディを持つ CCSprite サブクラス)。レベルがプレイされている間、ヒーロー キャラクターは画面の中央にとどまります。これを行うためにレイヤー位置を調整し、移動速度に基づいてズームインおよびズームアウトするレイヤー スケールを調整します。

例えば:

CGPoint layerPosition = ccp(((screenSize.width / 2) - ourHero.position.x) * sceneScale, ((screenSize.height / 2) - ourHero.position.y) * sceneScale);
[self setPosition:layerPosition];
[self setScale:sceneScale];

問題は、最初の数秒間だけでなく、速度が上がり、レイヤーがズームアウトすると、最初のレベル実行時に動きがぎくしゃくすることがよくあることです。ただし、ユーザーがレベルを再起動すると (ボタンは replaceScene を実行します)、置換レベルの移動は高速であっても完全にスムーズです。

バッチノードを使用しており、スプライト イメージをフレーム キャッシュに保存しています。レベル選択シーンでフレームキャッシュの設定やサウンドのプリロードをしてみましたが変わりません。レベル間でキャッシュを消去して、再起動したレベルで同じ動作を実行できるかどうかを試してみましたが、何もしませんでした。

これを引き起こす原因と、それを排除する方法を誰かが提案できますか.

ありがとう!

4

1 に答える 1

0

考えられる解決策:

すべてのテクスチャとスプライト シートを init/onEnter にロードします。すべてを一度にロードできない場合は、スレッド化されたロードを使用してください。オーディオ/音楽の場合、サウンド エンジンで preLoad 呼び出しを使用できます。

これが私のスレッドです。私も同じ問題に直面しました。最後に、ロードに別のスレッドを使用することで解決しました。

于 2012-09-23T19:31:17.560 に答える