【问题标题】:Scaling scene doesn't scale area of buttons缩放场景不缩放按钮区域
【发布时间】:2014-02-05 22:05:11
【问题描述】:

为了将 3.5 英寸 iPhone 的场景缩放到 4 英寸手机,我使用了代码

-(void)createSceneContents {

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
    CGSize result = [[UIScreen mainScreen] bounds].size;
    if(result.height == 480)
    {
    }
    if(result.height == 568)
    {
        [self runAction:[SKAction scaleXBy:1 y:1.2 duration:0]];
    }
}

它可以根据我的喜好将场景缩放得足够近,但是我在单击按钮时遇到了问题...

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInNode:self];
    SKNode *node = [self nodeAtPoint:location];

    if ([node.name isEqualToString:@"Saloon"]) {
        if (self.MOVING == NO) {
            self.SaloonWalk = YES;
            self.MOVING = YES;
        }
    }

问题是当我点击沙龙时,即使它随场景缩放,我的代码仍然具有未缩放的尺寸。因此,如果我在 Saloon 下方稍稍点击,它会运行上面的代码,但如果我在 Saloon 顶部附近点击,则不会发生任何事情。我进行了一些搜索,但在缩放区域以使用新缩放的场景触摸节点方面没有找到任何帮助。

【问题讨论】:

    标签: button scaling sprite-kit


    【解决方案1】:

    假设您已将 SKSpriteNode 子类化来构建您的按钮,并且您的 touchesBegan 上面显示的是在您的按钮子类中,您需要调用父级的位置:

    CGPoint location = [touch locationInNode:self.parent];
    

    因为 locationInNode 为您提供传入节点坐标中的位置。如果您要查找按钮节点,则应向触摸对象发送 locationInNode 以及您要查找的对象的父节点。

    【讨论】:

      猜你喜欢
      • 2021-11-05
      • 2021-06-04
      • 1970-01-01
      • 1970-01-01
      • 2012-10-05
      • 2012-01-03
      • 1970-01-01
      • 2010-11-13
      相关资源
      最近更新 更多