CCRotate没有完成

时间:2012-02-21 02:58:20

标签: cocos2d-iphone

我在序列中有一个简单的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的动作被停止,那么这三个日志语句就不会完成,对吗?

2 个答案:

答案 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。 “第二个”动作不在序列中。