【发布时间】:2014-07-28 17:44:43
【问题描述】:
我正在学习 Swift,但在带有 SKLabelNode 的 Sprite Kit 中遇到了一些奇怪的定位问题。
我写了以下代码:
shareText.position = CGPointMake( self.frame.size.width / 2 , shareButton.position.y);
这完全符合我的预期。它使文本在屏幕上水平居中。
嗯,我在视觉上将我的屏幕一分为二,所以我希望除以 4 并让它在屏幕的左半边“居中”显示。
shareText.position = CGPointMake( self.frame.size.width / 4 , shareButton.position.y );
不幸的是,SKLabelNode 看起来好像位于与框架相关的“0”位置。事实上,根据我能看到的文字数量,它看起来有点负面。
当我使用 NSLog 检查它的位置时,当我除以 2 时,它说它的 x 位置是 512。当我除以 4 时,它说它的 x 位置是 256(我所期望的)但在视觉上,它不是甚至接近。我还尝试将其设置为 shareButton.position.x,它也是 256(并在视觉上准确地显示了我的期望),但我得到了相同的结果。当我手动将其设置为 400 左右时,它似乎可以工作。
Swift 有什么问题(我现在是测试版)还是我做错了什么?
【问题讨论】:
-
了解 SpriteKit 使用的坐标系。
-
我找到了更多关于这个问题的信息。从一些随机谷歌搜索中,我发现,在将场景更改为该场景时,如果我使用 SKSceneScaleMode.ResizeFill 而不是 AspectFill,它“修复”了问题并将文本移动到正确的位置,但完全破坏了场景的其余部分。所以这与此有关,但我应该做些什么不同的事情?
-
正如我所说,您需要了解 SpriteKit 使用的坐标系。阅读documentation。
-
回复duc9y:我了解坐标系的基础知识。 0,0 应该在左下角。任何节点都以 0,0 作为其本地中心点。我发布了一个使用 Unity3D 的游戏,所以我对基本的 x,y 坐标系有一个牢固的掌握。只是 0,0 似乎不像我读过的那样是左下角。它似乎不在屏幕上。
-
你的阅读量还不够。阅读
position和anchorPoint属性。要直接回复用户,请在您的评论中为他们的用户名添加 @ 符号前缀。例如,“@duci9y ”。
标签: ios swift sprite-kit