我在一个序列中有一个简单的CCRotateBy
动作;它后面是另一个方法的调用它证实了CCRotateBy完成(否则,CCCallFunc
不会被调用的顺序,如果CCRotateBy没有完成):CCRotateBy没有完成
-(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语句确认旋转应该发生,并且旋转的角度不是零(它总是一个整数)。这些日志还显示CCSequence
正在完成。但是,精灵不在屏幕上旋转。我一直在努力研究这个代码几个小时,试图找出可能出错的地方。如果精灵的动作被停止,那么这3个日志语句就不会完成,对吗?
怪......嗯,有过类似的一个过去与另一间隔动作(科科斯版本99.4的时候)。你是否试图'摇动'系统并尝试CCRotateTo self.rotation + self.rotationAmount?那为我修好了... – YvesLeBorg 2012-02-21 04:50:46
我不知道CCSprite有一个旋转属性;它不在课堂参考中。这应该是精灵的旋转角度? – johnbakers 2012-02-21 11:49:00
CCSprite像cocos中的大多数(所有?)对象都从具有旋转属性的CCNode派生。我只是做了一个快速测试,它是可以设置的。此外(这听起来可能很愚蠢)你有没有证实self.isRunning是真的? – YvesLeBorg 2012-02-21 13:40:56