2014-09-25 38 views
0

我使用Xcode和Cocos2d版本3.0。用TouchMoved拖动精灵

我想拖动屏幕上的精灵。我已经成功地使用了以下代码:

(void) touchMoved:(UITouch *)touch withEvent:(UIEvent *)event 

{ 

CGPoint touchLocation = [touch locationInNode:self]; 

sprite1.position=touchLocation; 

sprite2.position=touchLocation; 

sprite3.position=touchLocation; 

sprite4.position=touchLocation; 

} 

但是,有时候精灵会在一秒钟后停止移动。这不是一个滞后,因为他们从来没有跟上我的运动。他们停止!如果我放开并再次开始移动我的触摸,精灵再次开始移动正常/有时再次执行“冻结”。

这是内存问题吗?

好吧,我确定它一定是记忆。我将这些代码复制到了一个几乎没有任何精灵的简单游戏中,并且完美运行。

+0

也许触摸离开[self boundingBox],在这种情况下,您将停止接收touchmoved事件。 – YvesLeBorg 2014-09-25 17:03:59

+0

感谢您的回复伊夫。我认为'自我'是指整个屏幕。当然,我的手指不会离开屏幕。也许我应该改变'自我'到别的东西? – SunnyDay1203 2014-09-25 17:15:24

+0

我不玩飞镖:)如果你“知道”自己的边框是全屏,那么你是对的,我没有进一步的解释提供。运气 – YvesLeBorg 2014-09-25 17:24:16

回答

0

好吧,我已经知道了!我在移动精灵时不得不启用UISwipeGestureRecognizers。

游戏注册我的touchesMoved移动作为滑动,并取消touchesMoved命令。