从 SKScene 内部设置屏幕方向
Setting screen orientation from inside SKScene
我的游戏是在单个 SKScene 对象中实现的。一个按钮 (SKSpriteNode) 让用户可以从横向模式切换到纵向模式。嗯,它应该。但我无法完成这项工作。对此有很多讨论,但都比较复杂,给出的建议也截然不同。
那么....在 SKScene 中制作一个按钮以将方向更改为纵向或横向的最简单方法是什么?
如有任何建议,我们将不胜感激。
这是对我发布的问题的简短、完整的回答。
在xcode,selectFile->New->Project->IOS->Application->Game生成一个默认的app框架IPad 使用 SpriteKit 和 ObjectiveC 的游戏。这是 classic HelloWorldApp,只要您触摸屏幕就会出现旋转的飞机。
在 Targets->DEploymentInfo->DeviceOrientation 中,选中 Portrait 和 LandscapeLeft
像这样修改视图控制器的 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;
}
在你的 gameScene 中改变 touchesBegan 的主体 class 像这样...
-(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"];
应用程序将在每次点击时保持方向。
我的游戏是在单个 SKScene 对象中实现的。一个按钮 (SKSpriteNode) 让用户可以从横向模式切换到纵向模式。嗯,它应该。但我无法完成这项工作。对此有很多讨论,但都比较复杂,给出的建议也截然不同。
那么....在 SKScene 中制作一个按钮以将方向更改为纵向或横向的最简单方法是什么?
如有任何建议,我们将不胜感激。
这是对我发布的问题的简短、完整的回答。
在xcode,selectFile->New->Project->IOS->Application->Game生成一个默认的app框架IPad 使用 SpriteKit 和 ObjectiveC 的游戏。这是 classic HelloWorldApp,只要您触摸屏幕就会出现旋转的飞机。
在 Targets->DEploymentInfo->DeviceOrientation 中,选中 Portrait 和 LandscapeLeft
像这样修改视图控制器的 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; }
在你的 gameScene 中改变 touchesBegan 的主体 class 像这样...
-(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"];
应用程序将在每次点击时保持方向。