2012-02-21 40 views
0

私はシンプルなアクションを持っています。 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つのログステートメントは完了しませんでした。

+0

奇妙な...うーん、(当時のココスバージョン99.4)別のインターバルアクションで過去に同様のものがありました。あなたはシステムを「揺らす」ようにして、CCRotateTo self.rotation + self.rotationAmountを試みましたか?私のためにそれを固定しました... – YvesLeBorg

+0

CCSpriteにローテーションプロパティがあったことはわかりませんでした。クラス参照には含まれていません。これは、スプライトの回転の度合いであると考えられていますか? – johnbakers

+1

CCSpriteは、回転プロパティを持つCCNodeから派生したココスのほとんどの(すべて?)オブジェクトのようです。私はちょうど簡単なテストをした、それは設定可能です。また、(これはばかげているかもしれません)self.isRunningが真であることを確認しましたか? – YvesLeBorg

答えて

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. 
+0

便利、ありがとう、しかし問題の原因ではない。私はイージーアクションを取り出し、まっすぐな回転アクションだけを使用しましたが、問題は残っていて、同じです – johnbakers

+0

いつcorrectRotation関数を呼び出していますか?私はちょうど私のプロジェクトで同様のコードをテストし、うまく動作するので、おそらく問題はあなたが関数を呼び出すときです。 rotationAmountが> 0であることを確認しますか?固定番号で試してみてください。 – Setrio

0

クイックルックですが、あなたのシーケンスでCCRotateByを呼び出しているわけではありません。 「第2の」アクションはシーケンス内にありません。

+0

申し訳ありません、あなたのバウンスアクションでは、ちょうどあなたがデバッグ中にイージーイン/アウトを削除することを見た。 – tassinari

関連する問題