5

Cocos2D で「コールバック」を実行できるカスタム アクションを作成するにはどうすればよいでしょうか。コールバックへの各呼び出しを最後の呼び出しよりも徐々に長くします (Cocos2D で既に提供されている EaseExponentialOut アクションに似たものを使用します)。

これに似たもの:(これは機能しません)

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 に基づいて独自のカスタム アクションを作成しようとしましたが、惨めに失敗しました。

4

1 に答える 1

2

どうやら、上記のコードは機能しているようで、持続時間のタイミングを使用しただけです。アクションはそのまま使用できるため、「コピー」を使用する必要もありませんでした。

タイミングを 0.034 から 0.25 程度に増やした場合、結果は私が望んでいたものに近づきました。ここで、持続時間の値をいじって「ちょうどいい」ものにする必要があります。

于 2009-04-17T13:32:47.887 に答える