2009-04-13 4 views
5

Cocos2Dでカスタムアクションを作成して、時間の経過と共にコールバックを実行して、コールバックへの各コールを最後のコールよりも徐々に長くする方法すでにCocos2Dで提供EaseExponentialOutアクションに似Cocos2D-iphoneによるカスタムイージングアクション

これに似た何か:。(動作しない)

id sequence = [Sequence actions: [CallFunc actionWithTarget: self selector: @selector(spinTick)], [DelayTime actionWithDuration: 0.034f], nil]; 
id repeat = [Repeat actionWithAction: [sequence copy] times: 18]; 
id ease = [EaseExponentialOut actionWithAction: [repeat copy]]; 
[ease setDuration:4]; 

id play = [CallFunc actionWithTarget:self selector:@selector(play)]; 
[self runAction: [Sequence actions: [ease copy], [play copy], nil]]; 

上記のコードは、全体「配列」を実行し18倍とし、「プレイを実行'最後のシーケンスの最後のコールバック

しかし、EaseExponentialOutは作成された 'repeat'アクションでは何の影響も受けていないようです - 私は 'sequence'アクションの中で 'DelayTime'アクションの継続時間を調整することを期待していましたが、これを行うように見えません。

IntervalActionに基づいて独自のカスタムアクションを作成しようとしましたが、悲惨に失敗しました。

+0

ここに何か不足していますか? spinTickコールバックはSpinnerActionを使用しますか?アニメーションが使用されているようではありません。私が見ているように、あなたは予想される容易な指数関数的な持続時間を持つspinTickコールバックの繰り返しシーケンスを持っています。 Spinnerはサンプルコードで参照されていません... –

+0

SpinnerActionが下部に追加されましたが、忘れました。 –

+0

もう一度見てから、スピンナーは実際には上記のコードで使用されることはありません - それは私の失敗したSpinnerActionの試行(事実の後に投稿の下に追加された)のインスタンスです –

答えて

2

明らかに、上記のコードは機能的ですが、それは期間内のタイミングを使用しただけです。アクションはそのまま使えるので、 'コピー'を使う必要はありませんでした。

タイミングを0.034から0.25の線に沿ってさらに増やすと、結果は私が見たいと思っていたものに近くなりました。今、私はちょうどそれを得るために期間の値で遊ばなければなりません。

+0

ちょっと私はバウンス玉。あなたは、その特定のものに対してイージー機能を使う方法のようにそれを実装するのを助けてくれますか? – rkb

+0

私はそれより多くの情報を必要としています。あなたが誰にも質問を投稿した場合は、おそらくもう少し詳しく知ることができます。 –

関連する問題