2013-02-27 2 views
0

Я добавил дополнительный 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 больше не работает. Есть идеи?

ответ

1

Я бы добавил некоторые точки останова в коде и прогуливался через него, но если бы я должен был догадаться, я бы сказал, что когда вы вызываете removeChild, вы теряете данные, которые у вас были в методе init, и что-то напуганное происходит.

Смежные вопросы