在Spritekit中,有没有办法在临时创建的SKSpriteNode变量上处理触摸事件?

时间:2016-08-27 20:37:19

标签: objective-c events sprite-kit touch sprite

我希望在触摸精灵时检测触摸并对其做出反应,但我不希望使用自己的类覆盖它(因此,在touchesBegan方法中处理)。我只是希望它被视为场景中的另一个精灵。我目前正在这样做:

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

但是,我想知道是否有更直接的方式来访问self.HangupButon和self.AnswerButton孩子的精灵?

2 个答案:

答案 0 :(得分:1)

你几乎把它钉在了一边,而不必继承。

逻辑是:

1)触摸场景
2)确定节点
3)基于节点触摸的过程。

我唯一可能做的就是让它成为一个单独的函数,并在第二个if上添加else(如果这是Swift,我会说使用一个开关)

答案 1 :(得分:0)

添加到精灵中的轻击手势识别器可能就是您要找的东西。

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