“触摸”的节点实际上没有触及

时间:2014-08-26 23:31:59

标签: ios sprite-kit skspritenode touch-event

我尝试使用spriteKit创建一个应用程序,当用户触摸精灵节点时,会出现一条NSLog消息,表明该节点已被触摸。 我尝试将触摸节点的名称与我检查是否被触摸的节点名称进行比较。问题是系统识别出节点被触摸了,尽管它没有触及。我认为节点区域存在问题,系统认为节点在某处,而绝对不是。

-(void)selectNodeForTouch:(CGPoint)touchLocation
{
    if([[touchedNode name] isEqualToString:@"menuPlayButton"]){

        NSLog(@"Pressed");
        }
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    /* Called when a touch begins */

    for (UITouch *touch in touches) {
        UITouch *touch = [[event allTouches] anyObject];
        CGPoint location = [touch locationInView:touch.view];
        CGPoint positionInScene = [touch locationInNode:self];

        [self selectNodeForTouch:positionInScene];


    }
}

任何想法可能是什么问题? 提前致谢

1 个答案:

答案 0 :(得分:0)

您的selectNodeForTouch:方法完全错误。它使用touchedNode变量,该变量未在您发布的代码中的任何位置定义。此方法应如下所示:

- (void)selectNodeForTouch:(CGPoint)touchLocation
{
    NSArray *nodes = [self nodesAtPoint:touchLocation];
    for (SKNode *node in nodes) {
        if([node.name isEqualToString:@"menuPlayButton"]) {
            NSLog(@"Pressed");
        }
    }
}