2014-06-29 2 views
1

J'essaie d'utiliser un SKSpriteNode comme transition d'une scène à l'autre. Comment puis-je faire ceci?Comment déterminez-vous quel SKSpriteNode a été cliqué?

[EDIT] Veuillez noter que ceci est pour OSX et non pour iOS. La méthode touchesBegan pour iOS ne semble pas fonctionner sous OSX.

+0

Je commencerais avec la documentation Apple pour kit de sprite, il a un certain nombre d'exemples sur la façon de manipuler les touches et sprites. https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Introduction/Introduction.html –

Répondre

4

D'accord, voici la solution pour OSX.

Vous devez d'abord initialiser la scène (l'objet autonome) afin qu'elle surveille les clics.

self.userInteractionEnabled = YES; //do this somewhere in initialization 

Dans le gestionnaire d'événement mouseDown, vérifier pour voir si un noeud (spécifiquement un SKSpriteNode dans ce cas) a été touché.

-(void)mouseDown:(NSEvent *)theEvent { 
    CGPoint location = [theEvent locationInNode:self]; //get location of touch 
    SKSpriteNode *spriteTouched = (SKSpriteNode*)[self nodeAtPoint:location]; //get a node if touched at that location 
    //DO SOMETHING WITH THE NODE 
    ... 
} 
2

Vous devez d'abord définir un nom pour le noeud. node.name = @"node's name"; ensuite dans la méthode touchesBegan ajouter ceci:

for (UITouch *touch in touches) { 
     CGPoint location = [touch locationInNode:self]; 
     if([[self nodeAtPoint:location].name isEqualToString:@"node's name"]){ 
      //present scene code here 
     } 
    } 
+0

La méthode touchesBegan que j'ai est l'événement - (void) touchesBeganWithEvent: (NSEvent *), que je crois est la version OSX de - (void) touchesBegan: (NSSet *) touche à l'événement Event: (UIEvent *), que je pense être la version iOS. J'ai vu une tonne de sites qui parlent de ce dernier. Il y a beaucoup d'informations sur comment faire tout cela pour iOS, mais pas beaucoup pour OS X, semble-t-il. – 02fentym

0

Essayez ceci, son travail pour moi

-(void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event { 

    for (UITouch *aTouch in touches) { 
     if (aTouch.tapCount >= 1) { 
      // The view responds to the tap 
      // do something here... 
    } 
} 
+0

Malheureusement, ceci est pour iOS seulement, pas OSX. – 02fentym

Questions connexes