2011-08-11 17 views
4

我想跟蹤用戶的手指在iPhone/cocos2d遊戲屏幕上的移動。重新初始化每個新觸摸的ccMotionStreak

到目前爲止,我可以使用的界面我GameLayer和宣佈,以我的init方法初始化的ccMotionStreak做到這一點。爲了吸引用戶的觸摸,我把touchesMoved下面的代碼:

UITouch *touch = [touches anyObject]; 
[streak setPosition:[self convertTouchToNodeSpace:touch]]; 

這工作,直到我舉起我的手指起來,並在屏幕上一個新的觸摸動作。我的遊戲並沒有畫出新的連勝,而是將舊連接的結尾連接到我的新連擊的開始處,並繼續保持同樣的連勝。這不是我想要的。

有沒有辦法重置我的ccMotionStreak?如果不是這樣,顯而易見的解決方案似乎是在每次新的觸摸上創建一個新的條紋(並刪除舊的條紋),但我無法得到這個工作。當我將初始化代碼移出init方法並移入touchesBegan時,條紋不再顯示。

我猜這應該是基本達到,但我無法弄清楚語法。我仍然在學習ObjC/cocos2d。有人可以幫忙嗎?

這是我如何初始化我的連勝我的init方法:

streak = [CCMotionStreak streakWithFade:3.0 minSeg:1 image:@"streak.png" width:4 length:8 color:ccc4(128,128,128,255)]; 
[self addChild:streak]; 

回答

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; 
} 
+0

我做了所有的事情,除了我已經實現了「touchesBegan」而不是「ccTouchesBegan」。 D'哦! – Imran