0

cocos2dたくさんのアセットをロードするロードシーンがあるゲームがあります。ゲームはスプラッシュ画面から始まり、読み込みシーンを開始します。読み込みシーンは背景を読み込むことから始まります。そのため、アセットが読み込まれている間、ユーザーには読み込みシーンの背景が表示されます。

CCSprite::spriteWithFile:ファイルパスを呼び出して渡すことにより、読み込みシーンの背景を読み込みます。loadingbackground.pvr.ccz

デバイスによって動作が異なるようです。

  1. iphone(3gs)シミュレーターでは、ロードシーンが期待どおりに表示されます。
  2. iphone retinaシミュレーターでは、読み込みシーンが表示されず(アセットがまだ多くないため、すぐに発生する可能性があります)、メインメニューシーンに直接移動します。
  3. iPad 3デバイスでは、スプラッシュ画面が表示され、次に0.5秒の黒い画面が表示され、メインメニューシーンが表示されます。

iPad 3で黒い画面が表示されないようにするために何ができるかを知りたいのですが、これは読み込み中の背景の読み込みに時間がかかったためだと思います。

私は次の最適化を試しました(主にメモリ最適化に関する@Steffenのブログ投稿に基づいています):

  1. 読み込み中の背景(元々は2.3 MB RGB8 pngファイル)をpvr.cczスプライトシートに移動し、サイズを1.8MBに縮小しました。
  2. 使用後すぐに画像をテクスチャから削除しました。

iPad 3でまだ黒い画面が表示されます。何か提案はありますか?

更新:問題が見つかりました-オーバーライドOnEnterして呼び出し[[CCDirector sharedDirector]replaceScene]、バックグラウンドスレッドからも呼び出しているコードがありました。OnEnterオーバーロードを削除し、ちらつきなしで動作しました。

ありがとう

4

2 に答える 2

1

シミュレーターで何が起こっても無視します。それは関係ありません。デバイスに注目してください。

ローディング シーンが初期化され、ローディング シーンの背景を追加するときは、更新をスケジュールし、更新メソッドでアセットをロードするようにしてください。そうしないと、init でアセットをロードすると、cocos2d が画面を再描画する前にすべてのアセットをロードしているため、背景が描画されません。

それでも失敗する場合は、背景スプライトに訪問メッセージを送信し、続いて [[CCDirector sharedDirector] drawScene] を送信します。これにより、シーンが強制的に再描画されます。

于 2013-01-22T09:14:39.917 に答える
1

これは cocos2d-iphone ですか、それとも cocos2d-x ですか? タグが正しいことを確認してください:)

起動時のちらつきについて言及していると思いますが、それを回避する方法がいくつかあります。最初に、iOS 6 および iOS 5 以下で rootViewController を正しく処理していることを確認する必要があります。それぞれに少し変更があります。

ここでちょっとしたリファレンスを見つけることができます: http://www.cocos2d-iphone.org/forum/topic/34471

次に、シミュレーターの動作が安定していないことを知っておく必要があります。テストには常に実際のデバイスを使用する必要がありますが、それでもちらつきの問題が発生する可能性が非常に高くなります。

申し訳ありませんが、コード例を提供していませんでしたが、ここでの本当の問題を知るのに十分な情報をサポートしていません.

于 2013-01-25T10:38:24.043 に答える