2016-08-27 2 views
0

スプライトに触れたときにタッチを検出して反応したいのですが、独自のクラスを使用して覆いたくはありません(touchesBeganメソッドで処理されます)。私はそれをシーン上の別のスプライトとみなしたいだけです。 self.HangupButonとself.AnswerButton子スプライト上のタッチにアクセスするために、より簡単な方法があるかどうか、私は疑問に思う、Spritekitでは、一時的に作成されたSKSpriteNode変数でタッチイベントを処理する方法はありますか?

UITouch * touch = [touches anyObject]; 

CGPoint location = [touch locationInNode:self]; 

SKSpriteNode *touchedNode = (SKSpriteNode *)[self nodeAtPoint:location]; 

if(touchedNode == self.AnswerButton) { 
    NSLog(@"ANSWER button pressed."); 
    return; 
} 

if(touchedNode == self.HangupButton) { 
    NSLog(@"HANGUP button pressed."); 
    [self hangUp]; 
    return; 
} 

しかし:私は現在、このようにそれをやっていますか?

答えて

1

あなたはそれがサブクラスにせずに、釘付け持っています。

ロジックである:

1)タッチシーン
2)タッチノードに基づいて、ノード
3)プロセスを決定します。

私は多分違うだろう唯一のことは、この別の関数にすると(これはスウィフトだった場合、私はスイッチを使用すると言うでしょう)

0

スプライトに追加されたタップジェスチャ認識機能が、あなたが探しているものかもしれません。かなりの

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIGestureRecognizer_Class/

+0

ビューとノードはあなたができる、2つの異なるものであれば第二に、他の追加ですスプライトに直接レコグナイザを追加すると、ビューに追加する必要があります。レコグナイザデリゲートをシーンに追加し、シーン内のどの場所で彼が既に使用しているコードをタッチしたのかを判断します – Knight0fDragon

関連する問題