我在序列中有一个简单的CCRotateBy
动作;然后调用另一个方法确认CCRotateBy已完成(否则,如果CCRotateBy未完成,则CCCallFunc
将不会在序列中被调用):
-(void)correctRotation{
if (self.rotationAmount){
CCLOG(@"correcting rotation inside: %i",self.buildNum);
CCRotateBy*second=[CCRotateBy actionWithDuration:1 angle:-self.rotationAmount];
CCEaseBackInOut*bounce2=[CCEaseBackInOut actionWithAction:second];
CCCallFunc*func=[CCCallFunc actionWithTarget:self selector:@selector(stabilize)];
CCSequence*seq=[CCSequence actions:bounce2,func, nil];
[self runAction:seq];
}
}
-(void)stabilize{
CCLOG(@"stabilize before rotation: %i for %i",self.rotationAmount,self.buildNum);
self.rotationAmount=0;
CCLOG(@"stabilize after rotation: %i for %i",self.rotationAmount,self.buildNum);
}
CCLog语句确认应该发生旋转,并且旋转角度不是nil(它总是一个整数)。这些日志还显示CCSequence
正在完成。但是,精灵不会在屏幕上旋转。我已经花了好几个小时试图找出可能出错的代码。如果sprite的动作被停止,那么这三个日志语句就不会完成,对吗?
答案 0 :(得分:1)
正如@tassinari所说,尝试删除弹跳功能。
这是来自cocos2d api参考
http://www.cocos2d-iphone.org/api-ref/1.1.0/interface_c_c_ease_back_in_out.html
Warning:
This action doesn't use a bijective function. Actions like Sequence might have an
unexpected result when used with this action.
答案 1 :(得分:0)
快速查看但您没有在序列中调用CCRotateBy。 “第二个”动作不在序列中。