由于手指不能在UIView上移动,因此CCSprite不再动画

时间:2011-06-19 17:32:57

标签: iphone uiview cocos2d-iphone cclayer

问题在于:我正在使用cocos2D和CCLayers,我使用UIView来捕获带有UstcrollMenu的Gesture识别器的移动。 在我的图层上,有动画精灵永远运行动画;当我用手指拖动scrollMenu并且我停止按住手指时,背景中的CCLayer不再更新,并且精灵不会移动。一旦我再次移动手指,就会更新精灵。 问题不应该来自精灵,因为当我停止并再次移动时,精灵不会播放下一帧,而是如果它继续正常移动应该显示的帧。我认为帧仍在计算中,但该层不再更新其视图。

有人有想法避免这种情况吗?

我没有做任何事情来更新CCSprites,我只是在他们身上启动了一个CCRepeatForever动作,然后我让他们的父CCLayer关心它们。 我试图安排这个CCLayer,但是只要我用手指拖动项目就不再调用更新功能......

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

[sprite runAction:hitAction];`

当我再次移动手指(显然允许CCLayer更新)时调用的函数是- (void)scrollViewDidScroll:(UIScrollView *)scrollView

2 个答案:

答案 0 :(得分:0)

嗯,你没有发布任何代码......但基于我过去曾经遇到的一个问题,这是我最好的猜测。如果要更新CCTouchesMoved内部的动画(或方法调用以执行动画),请停止这样做。只需更新CCTouchesMoved中可能需要的任何信息,然后在计时器方法内更新动画(如果使用[self scheduleUpdate]。

答案 1 :(得分:0)

我最后在cocos2D论坛上发布了这个问题,这是答案: http://www.cocos2d-iphone.org/forum/topic/17845