SpriteKit默认项目-为什么视图的原点在屏幕之外



我刚刚学习了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

在xcode 6.0.1中,他们使用了导致问题的新的一元运算符。我遇到了和你一样的问题,直到我删除了Unachiver代码,并恢复到在Unachiver之前创建SKSCENES的方式,这就是:

GameScene * scene = [GameScene sceneWithSize:skView.frame.size];
//instead of this 
GameScene *scene = [GameScene unarchiveFromFile:@"GameScene"];

回到以前的方式后,一切都很好。希望这能帮助其他人。

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

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

它应该看起来像这样:

nameOfYourScene.scaleMode = SKSceneScaleModeAspectFill;

希望能有所帮助!

最新更新