У меня есть простое 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);
}
The CCLog заявление подтверждает, что вращение должно происходить, а угол поворота не равен нулю (это всегда целое число). Эти журналы также показывают, что завершается CCSequence
. Однако спрайт не вращается на экране. Я часами пробовал этот код, пытаясь понять, что может пойти не так. Если действия спрайта были остановлены, то эти 3 оператора журнала не будут завершены, не так ли?
странно ... хммм, имели аналогичный один в прошлом с другим интервалом действия (Cocos версия 99,4 в то время). Вы пытались «встряхнуть» систему и попытаться использовать CCRotateTo self.rotation + self.rotationAmount? что исправил его для меня ... – YvesLeBorg
Я не знал, что на CCSprite было свойство вращения; это не в ссылке на класс. Предполагается, что это степени вращения спрайта? – johnbakers
CCSprite, как и большинство (все?) Объектов в cocos, происходит от CCNode, который имеет свойство вращения. Я только что сделал быстрый тест, он можно установить. Также (это может показаться глупым), вы подтвердили, что self.isRunning верно? – YvesLeBorg