2014-09-23 57 views
2

我刚刚学习了SpriteKit和Objective-C,我想知道为什么我的视图的起源不在屏幕上。我只是在xCode 6中创建了一个默认的SpriteKit项目,并且只是添加了一个NSLog来向我显示触摸的当前位置。控制台上的输出显示我,这个位置在x-coodrinate上是260.0,而不是在0.0附近。描述场景实现文件中我的问题SpriteKit默认项目 - 为什么视图来自屏幕?

一个例子: 当我添加SKSpriteNode与背景图像,并将其位置在屏幕的起源与:

-(void)didMoveToView:(SKView *)view { 
... 
SKSpriteNode *background = [SKSpriteNode spriteNodeWithImageNamed:@"Starfield"]; 
background.anchorPoint = CGPointZero; 
background.position = CGPointZero; 
[self addChild:background]; 
... 
} 

画面也出屏幕,而不是在设置了anchorPoint的左下角。

我试图在横向模式下,与各种设备(iPhone4S,5,6,6 +)和纯肖像模式,但它也没有工作。 感谢您的帮助。

Greatings,

马丁

+0

哪个xcode,5或6? – LearnCocos2D 2014-09-23 19:50:57

+0

对于这个例子我用xcode6.1 – 2014-09-23 20:00:35

+0

它的xcode 6.0.1,v6.1甚至还没有在测试版;) – LearnCocos2D 2014-09-23 20:06:30

回答

2

在xcode 6.0.1中,他们使用这个导致问题的新的解析器。我有同样的问题,因为你,直到我删除了取档代码,并恢复到SKSCENES是如何这是这个取档之前创建的:

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

//instead of this 

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

回到老样子一切工作就好了。希望这可以帮助别人。

+1

谢谢,现在一切正常。 – 2014-09-24 08:04:43

1

看看scaleMode属性,它在GameViewController的viewDidLoad方法设置。以下是描述您可以使用的不同模式的文档。 https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKScene_Ref/index.html#//apple_ref/c/tdef/SKSceneScaleMode

+0

感谢您的评论,这有助于我很多。默认“SKSceneScaleModeAspectFill”已设置,当我将其更改为“SKSceneScaleModeFill”时,x和y坐标匹配。但是现在整个内容都被拉长了。是否有更好的解决方案来手动缩放每个节点? – 2014-09-24 06:43:47

+0

我目前正在研究一个非常类似的问题。我发现这个链接很有用http://blog.infinitecortex.com/2014/01/spritekit-understanding-skscene-scalemode/你也可以改变场景的大小。 – 2014-09-24 16:13:08

+1

这是一个类似的问题很好的答案http://stackoverflow.com/questions/25205882/dealing-with-different-ios-device-resolutions-in-spritekit – 2014-09-24 16:19:40

0

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

它应该是这个样子:

nameOfYourScene.scaleMode = SKSceneScaleModeAspectFill; 

希望帮助!

+0

感谢您的评论,这有助于我很多。默认“SKSceneScaleModeAspectFill”已设置,当我将其更改为“SKSceneScaleModeFill”时,x和y坐标匹配。但是现在整个内容都被拉长了。是否有更好的解决方案来手动缩放每个节点? – 2014-09-24 06:44:03