追加の CCLayer を「GameScene」に追加しました。この CCLayer は[self addChild:_congratsScreen]
、キャラクターが画面上で一定量のオブジェクトを収集するたびに表示されます ( )。
GameScene.h 内で子レイヤー ( CClayer *congratsScreen
) を宣言し、GameScene.m で合成しています。GameScene のinit
メソッドで子 CCLayer を割り当てているので、このインスタンス変数で子レイヤーへの参照を保持しています。
私の GameScene にはいくつかCCParticleSystemQuad
のインスタンスがあり、両方を呼び出してパーティクル アニメーションを再生するのは非常に簡単stopSystem
ですが、子レイヤーで初期化されresetSystem
た で同じことを実行しようとすると、削除後に が機能しません。私の GameScene からの子をもう一度追加します。親レイヤーのシーンから CCLayer のコンポーネントを削除すると、CCLayer のコンポーネントに何かが起こりますか?CCParticleSystemQuad
resetSystem
現時点ではコードを持っていないので、それがどのように行われているかを説明するためにいくつかの疑似コードを書いてみます:
ChildLayer.m でどのように初期化されているか:
_sparkling= [CCParticleSystemQuad particleWithFile:@"sparkling.plist"];
次に、GameScene.m のどこかに次のものがあります。
- (void) showCongrats {
//pathetic way to create a modal panel
[self setTouchable = NO];
[[[self _congratsLayer] _sparkling] resetSystem];
[self addChild:_congratsLayer];
}
- (void) hideCongrats {
//let them continue playing
[self setTouchable = YES];
[[[self _congratsLayer] _sparkling] stopSystem];
[self removeChild:_congratsLayer];
}
したがって、最初に呼び出したときに機能しshowCongrats
、参照は良好で、パーティクルを操作できますが、レイヤーを非表示にしてゲームを続行し、おめでとうパネルを再度表示すると、最後の呼び出し、resetSystem
もはや機能しません。何か案は?