2016-08-27 2 views
0

Ich möchte Berührung erkennen und darauf reagieren, wenn ein Sprite berührt wird, aber ich möchte nicht, dass es mit einer eigenen Klasse abgedeckt wird (und daher in der touchBegan-Methode behandelt wird). Ich möchte nur, dass es als ein weiterer Sprite in der Szene betrachtet wird. Ich tue es derzeit so aus:Gibt es im Spritekit eine Möglichkeit, das Berührungsereignis auf einer temporär erstellten SKSpriteNode-Variablen zu behandeln?

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

Aber, frage ich mich, wenn es ein einfacher Weg, um die Berührung auf self.HangupButon und self.AnswerButton Kind Sprites zugreifen?

Antwort

1

Sie haben ziemlich viel es genagelt, ohne zu Unterklasse zu haben.

Logik ist:

1) zur Szene
2) Bestimmen Knoten
3) Verfahren auf Basis von Knoten berühren.

Das einzige, was ich würde vielleicht anders tun, ist dies eine separate Funktion machen, und fügen Sie sonst auf die zweite if (Wenn dies Swift wäre, würde ich die Verwendung eines Schalters sagen)

0

Ein TAP-Gesten-Erkenner, der dem Sprite hinzugefügt wurde, könnte das sein, wonach Sie suchen.

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

+0

Ansichten und Knoten sind zwei verschiedene Dinge, können Sie Füge den Erkenner nicht direkt zum Sprite hinzu, er müsste ihn zur Ansicht hinzufügen. Fügen Sie dann den Erkennerdelegierten zur Szene hinzu und bestimmen Sie dann, wo in der Szene er mit dem Code berührt wurde, den er bereits verwendet – Knight0fDragon

Verwandte Themen