2

私は、上から下への垂直線の形になるように、positionVar を使用してわずかに変更された CCParticleFlower パーティクルを使用しています。CCNode の更新では、パーティクルの位置を画面全体で常に左から右に変更し、右側に到達したら x を 0 に設定し、右へのスクロールを開始します。

問題は、X 値を 0 にリセットすると、すべてのパーティクルが点滅し、約 1 フレームの間消えて次のフレームに表示され、ひどいちらつき効果が発生することです。

X値を小さな数値でインクリメントしても発生しませんが、パーティクルの位置が最初の位置にリセットされると、win32、android、およびiosでちらつきます。最新の 1.1 バージョン (マスター ブランチ) を使用しています

4

1 に答える 1

1

最近、親が方向を変えるたびにパーティクルがジャンプするという、同様の問題が発生しました。それがまったく同じ問題であるかどうかはわかりませんが、問題を解決するのに役立ったスレッドは次のとおりです。

http://www.cocos2d-iphone.org/forum/topic/17167

関連する投稿:

私はちょうど同じ問題に遭遇しました、そしてそれの底に到達するのに時間がかかりました、>ここにローダウンがあります:使用しないでください

[セルフスケジュール:@selector(NextFrame :)];

代わりに、

[セルフスケジュール更新];

NextFrameの名前を変更します:更新するには:

カスタムセレクターを使用すると、CCSchedulerキューの最後で更新がスケジュールされます。つまり、パーティクルシステムが独自の更新メソッドを優先してスケジュールするため、パーティクルシステムのupdate:メソッドの後にNextFrame:メソッドが呼び出されます。パーティクルのクワッドの位置がエミッタの現在の位置を使用して更新され、次にエミッタがNextFrame:メソッドで移動されるため、これは適切ではありません。これにより、位置が原因​​ですべてのパーティクルが再び移動されます。エミッタの位置は、実際にはパーティクルを描画するCCNodeの位置です。scheduleUpdateを使用すると、実際にupdate:メソッドを優先度0でスケジュールします。これは、パーティクルシステムのupdate:メソッドの前に呼び出され、すべてが正常に行われることを意味します。

したがって、基本的には、クラスに更新メソッドを追加し、手動でスケジュールするのではなく、scheduleUpdateを呼び出します。

于 2013-01-09T21:51:07.207 に答える