【问题标题】:SpriteKit Default Project - Why is the views origin out of the screen?SpriteKit 默认项目 - 为什么视图起源于屏幕之外?
【发布时间】:2014-09-23 17:36:00
【问题描述】:

我刚刚学习 SpriteKit 和 Objective-C,我想知道为什么我的视图的起源在屏幕之外。我刚刚在 xCode 6 中创建了一个默认的 SpriteKit 项目,并且只是添加了一个 NSLog 来向我显示当前的触摸位置。控制台上的输出显示,对于 x 坐标,此位置位于 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+)和纯纵向模式,但它也不起作用。 感谢您的帮助。

祝你好运

马丁

【问题讨论】:

  • 哪个 xcode,5 还是 6?
  • 在这个例子中我使用了 xcode6.1
  • 它是 xcode 6.0.1,v6.1 甚至还没有测试版;)
  • 哎呀,拼写错误:)

标签: ios objective-c iphone xcode sprite-kit


【解决方案1】:

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

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

//instead of this 

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 感谢您的评论,这对我很有帮助。默认情况下,“SKSceneScaleModeAspectFill”已设置,当我将其更改为“SKSceneScaleModeFill”时,x 和 y 坐标匹配。但现在整个内容都被拉长了。有没有更好的解决方案来手动缩小每个节点?
    • 我目前正在研究一个非常相似的问题。我发现这个链接很有帮助blog.infinitecortex.com/2014/01/…您还可以更改场景的大小。
    • 这是一个类似问题的好答案stackoverflow.com/questions/25205882/…
    【解决方案3】:

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

    它应该看起来像这样:

    nameOfYourScene.scaleMode = SKSceneScaleModeAspectFill;
    

    希望有帮助!

    【讨论】:

    • 感谢您的评论,这对我很有帮助。默认情况下设置了“SKSceneScaleModeAspectFill”,当我将其更改为“SKSceneScaleModeFill”时,x 和 y 坐标匹配。但现在整个内容都被拉长了。有没有更好的解决方案来手动缩小每个节点?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    • 2011-10-10
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多