Swift self.frame.width和SKLabelNode

时间:2014-07-28 17:44:44

标签: ios swift sprite-kit

我正在学习Swift,并在使用SKLabelNode的Sprite Kit中遇到一些奇怪的定位问题。

我写了以下代码:

  

shareText.position = CGPointMake(self.frame.size.width / 2,   shareButton.position.y);

这完全符合我的预期。它将文本水平居中在屏幕上。

好吧,我将我的屏幕视觉分成两半,所以我希望将它除以4并让它显示出来#34;居中"在屏幕的左半部分。

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有什么问题(我现在它是测试版)还是我做错了什么?

1 个答案:

答案 0 :(得分:0)

所以我认为我找出了问题并且它与我的Swift代码无关,而是与XCode本身(或者默认情况下XCode如何运行的文档)。与上述评论中链接的文档@ duci9y提到了以下内容......

"因此,场景初始化为高度1024,宽度为768,左下角有原点(0,0),上层有(1024,768)坐标 - 右角。"

我发现在我的GameScene.sks文件中,它默认为相反。宽度为1024,高度为768.我的游戏应该是纵向的,所以我希望它像文档说的那样,而不是XCode如何默认我的项目。我猜测这意味着(0,0)屏幕左边是128点,而不是画像的左下角,而是在风景中的正确位置。

我不确定这是否是XCode 6 beta 4的问题,或者列出的文档是否过时,但是一旦我交换了这些数字,它们似乎都按照我想要的方式工作。