我正在使用cocosbuilder 2.1运行cocos2d,我使用cocosbuilder动画委托(CCBAnimationManagerDelegate::completedAnimationSequenceNamed
)在动画完成时收到通知,并采取行动,例如发射另一个cocosbuilder动画。
第一次从委托运行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
方法运行动画!?
提前感谢您的帮助。
答案 0 :(得分:2)
我认为这是一个CCBReader错误。在CocosBuilder github页面(https://github.com/cocos2d/CocosBuilder/issues/121)中有一个关于它的公开问题。它应该在最新版本的CocosBuilder + CCBReader中修复,但是,如果要使用2.1版本,可以将CCBAnimationManager的“sequenceCompleted”方法更改为以下内容:
- (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];
}