Ios SpriteKit默认项目-为什么视图原点不在屏幕上?

Ios SpriteKit默认项目-为什么视图原点不在屏幕上?,ios,objective-c,iphone,xcode,sprite-kit,Ios,Objective C,Iphone,Xcode,Sprite Kit,我刚刚学习了SpriteKit和Objective-C,我想知道为什么我的观点来源于屏幕之外。我刚刚在xCode 6中创建了一个默认的SpriteKit项目,并简单地添加了一个NSLog来显示触摸屏的当前位置。控制台上的输出告诉我,对于x-coodrinate,该位置位于260.0,而不是接近0.0 描述场景实现文件中问题的示例: 当我添加带有背景图像的SKSpriteNode并将其放置在屏幕原点时,使用: -(void)didMoveToView:(SKView *)view { ... SK

我刚刚学习了SpriteKit和Objective-C,我想知道为什么我的观点来源于屏幕之外。我刚刚在xCode 6中创建了一个默认的SpriteKit项目,并简单地添加了一个NSLog来显示触摸屏的当前位置。控制台上的输出告诉我,对于x-coodrinate,该位置位于260.0,而不是接近0.0

描述场景实现文件中问题的示例: 当我添加带有背景图像的SKSpriteNode并将其放置在屏幕原点时,使用:

-(void)didMoveToView:(SKView *)view {
...
SKSpriteNode *background = [SKSpriteNode spriteNodeWithImageNamed:@"Starfield"];
background.anchorPoint = CGPointZero;
background.position = CGPointZero;
[self addChild:background];
...
}
图片也不在屏幕上,而不在左下角,也就是设置主播点的地方

我在横向模式下试过,用各种设备(iPhone4S,5,6,6+)和纯纵向模式,但也不起作用。 谢谢你的帮助

格雷廷斯


Martin

看看scaleMode属性,它是在GameViewController的viewDidLoad方法中设置的。下面是描述您可以使用的不同模式的文档

在ViewController.m中,将场景的缩放模式更改为SKSceneScaleModeAspectFill

它应该是这样的:

nameOfYourScene.scaleMode = SKSceneScaleModeAspectFill;

希望有帮助

在xcode 6.0.1中,他们使用这个新的unarchiver,这会导致问题。我和你的问题一样,直到我删除了unarchiver代码并恢复到unarchiver之前创建SKSCENES的方式,即:

GameScene * scene = [GameScene sceneWithSize:skView.frame.size];

//instead of this 

GameScene *scene = [GameScene unarchiveFromFile:@"GameScene"];

回到原来的方式后,一切都很好。希望这可能会对其他人有所帮助。

哪个xcode,5还是6?在这个例子中,我使用了xcode 6.1,它的xcode 6.0.1,v6.1甚至还没有进入测试阶段;)篮球,拼写错误:)谢谢你的评论,这对我帮助很大。默认情况下设置了“SKSceneScaleModeAspectFill”,当我将其更改为“SKSceneScaleModeFill”时,x和y坐标匹配。但现在整个内容都被拉伸了。有没有更好的方法可以手动缩小每个节点?我目前正在研究一个非常类似的问题。我发现这个链接很有用,你也可以改变场景的大小。这是一个类似问题的很好的答案。谢谢你的评论,这对我很有帮助。默认情况下设置了“SKSceneScaleModeAspectFill”,当我将其更改为“SKSceneScaleModeFill”时,x和y坐标匹配。但现在整个内容都被拉伸了。是否有更好的解决方案手动缩小每个节点?