0

ここに問題があります: 私は cocos2D と CCLayers を使用しており、UIView を使用して、UIScrollMenu のジェスチャー認識機能で動きをキャッチしています。私のレイヤーには、アニメーションを永久に実行するアニメーション化されたスプライトがあります。scrollMenu を指でドラッグして指を離すと、バックグラウンドの CCLayer が更新されなくなり、スプライトが動かなくなります。もう一度指を動かすとすぐに、スプライトが更新されます。停止して再び移動すると、スプライトは次のフレームを再生せず、正常に動き続けていた場合に表示されるはずだったフレームを再生するため、問題はスプライトに起因するものではありません。フレームはまだ計算されていると思いますが、レイヤーはビューを更新しません。

誰かがそれを避けるためのアイデアを持っていますか?

私は CCSprites を更新するために何もしません。CCRepeatForever アクションを起動するだけで、親の CCLayer がそれらを気にかけます。この CCLayer をスケジュールしようとしましたが、アイテムを指でドラッグするとすぐに更新関数が呼び出されなくなりました...

`CCAction *hitAction = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:hitAnim restoreOriginalFrame:NO]];

[sprite runAction:hitAction];`

指を再び動かしたときに呼び出される関数 (そして明らかに CCLayer の更新を許可する) は次のとおりです。- (void)scrollViewDidScroll:(UIScrollView *)scrollView

4

2 に答える 2

0

さて、あなたはコードを投稿しませんでした...しかし、私が過去に一度持っていた問題に基づいて、これは私の最良の推測です。CCTouchesMoved内でアニメーション(またはアニメーションを実行するためのメソッド呼び出し)を更新する場合は、それを停止します。CCTouchesMoved内で必要になる可能性のある情報を更新してから、タイマーメソッド内でアニメーションを更新するだけです([self scheduleUpdate]を使用する場合など)。

于 2011-06-20T09:53:20.733 に答える
0

この質問を cocos2D フォーラムに投稿することになりました。ここに答えがあります: http://www.cocos2d-iphone.org/forum/topic/17845

于 2011-06-21T13:44:58.003 に答える