Запустить другую анимацию после запуска анимации с помощью ccbanimationmanager
Я запускаю cocos2d с cocosbuilder 2.1 и использую делегат анимации cocosbuilder (CCBAnimationManagerDelegate::completedAnimationSequenceNamed
) получать уведомления о завершении анимации и выполнять действия, такие как запуск другой анимации кокосостроителя.
Он работает нормально в первый раз foodfactoryshow
анимация запускается из делегата и после завершения анимации также запускается restoration
анимация правильно. Однако когда restoration
анимация завершена, параметр name
за -(void) completedAnimationSequenceNamed
метод NULL
!?
-(void) completedAnimationSequenceNamed:(NSString*)name
{
if ([name isEqualToString:@"foodfactoryshow"])
{
[manager runAnimationsForSequenceNamed:@"restoration"];
}
if ([name isEqualToString:@"restoration"])
{
[self colorLayerChanged];
self.gameLayer.isLock = true;
}
}
Это ошибка или я не должен запускать анимацию из CCBAnimationManagerDelegate::completedAnimationSequenceNamed
метод!?
Заранее спасибо за помощь.
1 ответ
Я считаю, что это ошибка CCBReader. Существует открытая проблема на странице github CocosBuilder ( https://github.com/cocos2d/CocosBuilder/issues/121). Это должно быть исправлено в последней версии CocosBuilder + CCBReader, однако, если вы хотите использовать версию 2.1, вы можете изменить метод sequenceCompleted CCBAnimationManager следующим образом:
- (void) sequenceCompleted
{
NSString *completedSequenceName = [runningSequence.name copy];
int nextSeqId = runningSequence.chainedSequenceId;
runningSequence = NULL;
if (nextSeqId != -1)
{
[self runAnimationsForSequenceId:nextSeqId tweenDuration:0];
}
[delegate completedAnimationSequenceNamed:completedSequenceName];
[completedSequenceName release];
}