2016-08-20 54 views
1

我试图理解的锚点的基础知识在迅速阅读本: https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Nodes/Nodes.htmlSwift中的锚点?

我了解,在siwft,与精灵套件,现场的定位点是在屏幕的下左上角。

所以,如果我定位是这样的节点:

myNode.position = CGPoint(x: 0, y: 0) 
self.addChild(myNode) 

它不会出现在我的视线。所以我尝试了另一件事:

myNode.position = CGPoint(x: middleOfmyView, y: 0) 
    self.addChild(myNode) 

现在我看到了我的广场顶部的一半。所以我从屏幕底部看到20个像素。

于是我说:

myNode.position = CGPoint(x: middleOfmyView, y: 0+myNode.frame.size.height/2) 
     self.addChild(myNode) 

现在我可以看到我的整个广场,在屏幕的中间。

然后,我把它放在X:0,让在Y点这样的:

myNode.position = CGPoint(x: 0, y: 0+myNode.frame.size.height/2) 
self.addChild(myNode) 

现在我看不到我的节点即使在右下角写有“1节点”出现我的屏幕角落!

所以我想知道的是iPhone屏幕的0,0点真的在屏幕的左下角? 那么我的精灵节点的锚点在哪里?我怎么把我的广场放在屏幕的左下角?

这一切只是为了了解事情是如何工作的?非常感谢提前对你的帮助:)

我使用的Xcode 7.3.1,我仍然不明白为何点0让我做没有看到我的东西......这绝对是一个错误?

+0

你确定场景在你的视图中处于正确的位置吗?与主视图的框架相比,场景的“框架”是什么? – jrturton

+0

当我打印框架场景时;我得到了:((-0.0,-0.0,1024.0,768.0)) 因此,与主视图相同,不是?无论如何,在尝试将节点放在场景中之前,我并没有改变场景的框架。 – Julien

+0

视图大小不一定与场景大小相同(要实现此目的,可以在视图控制器中设置scene.size = view.bounds.size)。因此,如果您的视图是iPhone 6的大小,则默认场景为1024x768,这意味着,如果将节点放置在0,0,则根据节点大小可能看不到节点。 – Whirlwind

回答

1

SKSpritenodes默认为(0.5,0.5)的anchorPoint,意味着节点的中间位置将设置为该位置的位置。要更改anchorPoint,请执行以下操作:node.anchorPoint = CGPoint(x: 0, y: 0)此示例将节点的anchorPoint设置为其左下角。请记住,改变anchorPoint也改变旋转的原点,那anchorPoint值是0和1之间。把广场左下角:

myNode.anchorPoint = CGPoint(x: 0, y: 0) 
myNode.position = CGPoint(x: frame.minX, y: frame.minY) 

如果您需要任何其他帮助(或如果我没有涵盖你想要的东西)随时问我,我会尽我所能帮助

+0

您好Nik,感谢您的回答。当我做你告诉我的事情时,我看不到我的广场,而我应该在我看来表现出来。我看不到它!你有任何解释吗?你可以尝试一下,启动应用程序并告诉我你得到了什么?我有“1节点”,并没有出现在屏幕上... – Julien

+0

尝试添加到行'self.anchorPoint = CGPoint(x:0,y:0)'到您的场景 – Nik