私はシンプルなアクションを持っています。 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文
が回転することを確認されています。それは、(CCRotateByが完了しなかった場合CCCallFunc
が順番に呼び出されませんでしたことを、そうでない場合)CCRotateByが完了したことを確認し、他のメソッドの呼び出しが続いています起こっているはずであり、回転の角度はゼロではありません(常に整数です)。これらのログには、
CCSequence
が完了していることも表示されます。ただし、スプライトは画面上で回転していません。私は、このコードを何度も間違っている可能性があることを突きつけようとしています。スプライトのアクションが停止していた場合、これらの3つのログステートメントは完了しませんでした。
奇妙な...うーん、(当時のココスバージョン99.4)別のインターバルアクションで過去に同様のものがありました。あなたはシステムを「揺らす」ようにして、CCRotateTo self.rotation + self.rotationAmountを試みましたか?私のためにそれを固定しました... – YvesLeBorg
CCSpriteにローテーションプロパティがあったことはわかりませんでした。クラス参照には含まれていません。これは、スプライトの回転の度合いであると考えられていますか? – johnbakers
CCSpriteは、回転プロパティを持つCCNodeから派生したココスのほとんどの(すべて?)オブジェクトのようです。私はちょうど簡単なテストをした、それは設定可能です。また、(これはばかげているかもしれません)self.isRunningが真であることを確認しましたか? – YvesLeBorg