从SKScene内部设置屏幕方向

时间:2015-09-13 12:10:40

标签: ios sprite-kit screen-orientation skscene

我的游戏是在一个SKScene对象中实现的。按钮(SKSpriteNode)允许用户从横向模式切换到纵向模式。好吧,它应该。但我无法做到这一点。关于这一点有很多讨论,但它们都相当复杂,并提出完全不同的建议。

那么....在SKScene中制作按钮的最简单方法是将方向更改为纵向还是横向?

任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:0)

以下是对我发布的问题的简短,完整的答案。

  1. 在xcode中,选择File-> New-> Project-> IOS-> Application-> Game,使用带有ObjectiveC的SpriteKit为iPad的游戏生成默认应用框架。这是经典的HelloWorldApp,每当您触摸屏幕时都会出现旋转飞机。

  2. 在Targets-> DEploymentInfo-> DeviceOrientation中,勾选Portrait&LandscapeLeft

  3. 修改视图控制器的shouldAutorotate,如此...

    - (BOOL)shouldAutorotate
    {
        int currentOrientation = (int)[[UIDevice currentDevice] orientation];
        if (scene.orientation != currentOrientation) {
            // Rotate the device back to orginial orientation
            [[UIDevice currentDevice] setValue:
             [NSNumber numberWithInteger: scene.orientation]
                                        forKey:@"orientation"];
            return NO;
        }
        return YES;
    }
    
  4. 更改gameScene类中touchesBegan的主体,如此......

    -(void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
          /* Called when a touch begins */
            NSLog(@"%d", self.orientation);
            if (!self.orientation ||  self.orientation == UIInterfaceOrientationPortrait) {
                self.orientation = UIInterfaceOrientationLandscapeLeft;
            } else {
                self.orientation = UIInterfaceOrientationPortrait;
            }
            [[UIDevice currentDevice] setValue:
             [NSNumber numberWithInteger: self.orientation]
                                        forKey:@"orientation"];
    
  5. 然后,应用程序将在每次点击时改变方向。