我在我的“GameScene”中添加了一个额外的 CCLayer,[self addChild:_congratsScreen]
只要我的角色在屏幕上收集给定数量的对象,它就会变得可见 ()。
在我的 GameScene.h 中,我声明了我的子层 ( CClayer *congratsScreen
),并在我的 GameScene.m 上合成它。我在 GameScene 的init
方法中分配子 CCLayer,因此它在此实例变量中持有对子层的引用。
在我的 GameScene 上,我有几个CCParticleSystemQuad
实例,调用它们stopSystem
并resetSystem
重放我的粒子动画非常简单,但是如果我尝试CCParticleSystemQuad
在子层上初始化的那个上做同样的事情,resetSystem
那么在我删除后它就不起作用我的 GameScene 中的孩子并将其重新添加回来。CCLayer 的组件从父层的场景中移除后会发生什么情况吗?
我目前没有代码,所以我将尝试编写一些伪代码来说明它是如何完成的:
它是如何在 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
不再有效。有任何想法吗?