【问题标题】:TouchesBegan method not selecting right nodesTouchesBegan 方法没有选择正确的节点
【发布时间】:2014-04-03 01:10:16
【问题描述】:

在我的 SKScene 的 TouchesBegan 方法中,我正在检查用户是否这样选择了一个节点:

UITouch *touch = [[event allTouches] anyObject];
CGPoint location = [touch locationInNode:self];
SKNode *node = [self nodeAtPoint:location];
NSLog(@"node.name: %@",node.name);

if ([node.name isEqualToString:@"1"]){
    bgColor = 1;
}
else if ([node.name isEqualToString:@"2"]){
    bgColor = 2;
}
else if ([node.name isEqualToString:@"3"]){
    bgColor = 3;
}
else if ([node.name isEqualToString:@"4"]){
    bgColor = 4;
}
else if ([node.name isEqualToString:@"5"]){
    bgColor = 5;
}
else if ([node.name isEqualToString:@"6"]){
    bgColor = 6;
}

我的节点都在这样的方法中初始化:

SKShapeNode *bg = [SKShapeNode node];
[bg setPath:CGPathCreateWithRoundedRect(CGRectMake(self.size.width-50*2, 55, 50, 50), 6, 6, nil)];
bg.fillColor = [SKColor orangeColor];
bg.glowWidth = 0;
bg.name = @"6";
return bg;

当然,除了名称和颜色属性之外,这些方法都相似。 节点分为两行,一个在 y 120,另一个在 y 55,X 不同,但是当用户单击第 120 或 55 行中的任何节点时,记录的节点名称最多是来自该节点的名称对。 为什么会这样?我做错了什么?

【问题讨论】:

    标签: objective-c xcode sprite-kit touchesbegan sknode


    【解决方案1】:

    我可以重现你的问题并找到解决方案:

    不要通过在CGRectMake() 中设置起点和终点来定位SKShapeNode。相反,只需使用SKShapeNode 的常规postion 属性。否则,节点似乎相互重叠,尽管形状处于不同的坐标。

    SKShapeNode *bg = [SKShapeNode node];
    [bg setPath:CGPathCreateWithRoundedRect(CGRectMake(0, 0, 50, 50), 6, 6, nil)];
    bg.position = CGPointMake(self.size.width-50*2, 55);
    bg.fillColor = [SKColor orangeColor];
    bg.glowWidth = 0;
    bg.name = @"6";
    return bg;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-24
      • 2010-10-24
      • 1970-01-01
      • 2012-06-24
      相关资源
      最近更新 更多