2011-08-11 7 views
4

iPhone/cocos2dゲームの画面上でユーザーの指の動きをトレースしようとしています。新しいタッチごとにccMotionStreakを再初期化する

これまでのところ、私はGameLayerのインターフェイスで宣言されたccMotionStreakを使ってこれを行うことができ、私のinitメソッドで初期化しました。私は私の指を持ち上げ、画面上の新しいタッチ動作を行うまで

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

これは動作します:ユーザのタッチを描画するには、私はtouchesMovedに次のコードを置きます。新しいストリークを描く代わりに、私のゲームは古いストリークの終わりと新しいスワイプの始まりをつなぎ、同じストリークを続けます。これは私が望むものではありません。

私の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

"ccTouchesBegan"ではなく "touchesBegan"を実装していた以外は、すべてこれを行いました。 D'oh! – Imran

関連する問題