我正试图在我的iPhone / cocos2d游戏中追踪用户手指在屏幕上的移动。
到目前为止,我可以使用在我的GameLayer接口中声明的ccMotionStreak并在我的init方法中初始化。为了绘制用户的触摸,我将以下代码放在touchesMoved:
中UITouch *touch = [touches anyObject];
[streak setPosition:[self convertTouchToNodeSpace:touch]];
这一直有效,直到我抬起手指并在屏幕上进行新的触摸动作。我的游戏没有画出新的连胜,而是将旧条纹的结尾连接到我的新滑动的开头,并继续相同的条纹。这不是我想要的。
有没有办法重置我的ccMotionStreak?如果没有,明显的解决方案似乎是在每次新的触摸上创建一个新的条纹(并删除旧的),但我不能让它工作。当我将我的条纹的初始化代码从init方法移到touchesBegan时,条纹根本不再显示。
我猜这应该是基本的实现,但我无法弄清楚语法。我还在学习ObjC / cocos2d。有人可以帮忙吗?
以下是我在init方法中初始化streak的方法:
streak = [CCMotionStreak streakWithFade:3.0 minSeg:1 image:@"streak.png" width:4 length:8 color:ccc4(128,128,128,255)];
[self addChild:streak];
答案 0 :(得分:0)
您是否删除/释放ccTouchesEnded和ccTouchesCancelled上的旧条纹?
// in ccTouchesBegan
streak = [CCMotionStreak streakWithFade:3.0 minSeg:1 image:@"streak.png" width:4 length:8 color:ccc4(128,128,128,255)];
[streak setPosition:location];
[self addChild:streak];
// in ccTouchesEnded and ccTouchesCancelled
if (streak) {
[streak removeFromParentAndCleanup:YES];
streak = NULL;
}