Я добавил дополнительный CCLayer к моей «GameScene», который становится видимым ([self addChild:_congratsScreen]
), когда мой персонаж собирает заданное количество объектов на экране.Почему я не могу сбросить свой CCParticleSystemQuad из родительского CCLayer?
В моем GameScene.h я объявил свой дочерний слой (CClayer *congratsScreen
), и я его синтезирую на своей GameScene.m. Я выделяю дочерний CCLayer в методе GameScene, поэтому он удерживает ссылку на дочерний слой в этой переменной экземпляра.
На моем 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
больше не работает. Есть идеи?