[ios]SKShapeNode 儿童帧给虚假的位置

标签: sprite-kit ios Swift
发布时间: 2017/4/3 20:32:44
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有 SKShapeNode 具有多个 SKSpriteNodes 作为其子元素,围绕其中心在不同的地方放置。我也旋转,SKShapeNode,实际上旋转其所有子项。然而,当我循环遍历所有的那些子元素,他们的帧的位置上画圆,他们是所有绘制在屏幕 (由一个大的距离,从地方实际绘制子画面抵消) 的左下角。

let Circle = SKShapeNode(circleOfRadius: 110)
Circle.position = CGPointMake(0, 0)
Circle.name = "maincircle"

var tmpNode: SKSpriteNode


tmpNode = SKSpriteNode(imageNamed: fallingObjects[0])
tmpNode.name = "blue_hvat"
tmpNode.setScale(0.1)
tmpNode.position = CGPointMake(0, 80)   
Circle.addChild(tmpNode)

tmpNode = SKSpriteNode(imageNamed: fallingObjects[1])
tmpNode.name = "green_hvat"
tmpNode.setScale(0.1)
tmpNode.position = CGPointMake(0, -80)
Circle.addChild(tmpNode)

...

self.addChild(Circle)

...

guard let obj = self.childNodeWithName("maincircle") else {
    return
}
for l in (obj.children) {
    //here when I use l.frame I get the wrong location of those sprites
    continue
}

我浏览计算器,发现类似的问题,但是没有一个人帮助我。我将感谢任何帮助。谢谢你 !

解决方法 1:

您的对象的所有子级的 x 位置为 0。所以当你试图在他们图文框的位置画圆圈,他们绘制在屏幕的左下角,这是正常的因为在 SpriteKit,在屏幕的起源是左下的角,因为对象的所有帧都都与他们的父母。

所以,如果你有一些家长,有 x position250 ,和里面这位家长,你有一个节点与 x position0 ,此子节点的位置是有关他的父母,但有关屏幕的 250 0。

如果你想要得到相关的儿童的屏幕位置到你 obj 节点,我建议你继续像这样为例︰

l.frame.origin.x + obj.frame.origin.x
l.frame.origin.y + obj.frame.origin.y
官方微信
官方QQ群
31647020