gpt4 book ai didi

ios - 为什么我无法从父级 CCLayer 重置我的 CCParticleSystemQuad?

转载 作者:行者123 更新时间:2023-11-29 04:06:28 25 4
gpt4 key购买 nike

我在“GameScene”中添加了一个额外的 CCLayer,只要我的角色在屏幕上收集了给定数量的对象,该 CCLayer 就会变得可见 ([self addChild:_congratsScreen])。

在我的 GameScene.h 中,我声明了我的子层 (CClayer *congratsScreen),并在我的 GameScene.m 上合成它。我在 GameScene 的 init 方法中分配子 CCLayer,因此它在此实例变量中保存对子层的引用。

在我的 GameScene 上,我有一些 CCParticleSystemQuad 实例,调用 stopSystemresetSystem 来重播我的粒子动画非常简单,但如果我尝试在子层上初始化的 CCParticleSystemQuad 上执行相同的操作,则在我从 GameScene 中删除子项并添加后,resetSystem 将不起作用它又回来了。一旦从父图层场景中删除 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 不再起作用。有什么想法吗?

最佳答案

我会在代码中添加一些断点并遍历它,但如果我不得不猜测,我会说,当您调用removeChild时,您正在丢失 init 方法中的数据,并且正在发生一些奇怪的事情。

关于ios - 为什么我无法从父级 CCLayer 重置我的 CCParticleSystemQuad?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15114989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com