【问题标题】:How to add sub-child to a child of self in swift如何快速将子孩子添加到自我的孩子
【发布时间】:2015-09-30 14:35:51
【问题描述】:

我正在尝试快速添加两个具有各自纹理的 SKSpriteNode,但是在模拟过程中“Blade”没有出现在屏幕上。不过,我可以毫无困难地让“句柄”出现。所以我的问题是,快速添加 self 的孩子的孩子的正确方法是什么,以便一切按预期工作?

    var Handle = SKSpriteNode(imageNamed: "Handle.png")
    var Blade = SKSpriteNode(imageNamed: "Blade.png") 

    override func didMoveToView(view: SKView) {
    Handle.position = CGPointMake(self.size.width / 2, self.size.height / 14)
    Blade.position = CGPointMake(Handle.position.x, Handle.position.y + 124)

    self.addChild(Handle)
    Handle.addChild(Blade)
}

【问题讨论】:

  • 你能试试这样吗:Blade.position = CGPointMake(Handle.frame.width/2, Handle.frame.height/2)。它应该出现在 Handle 节点的中心。只是看看是否:您将刀片放置得太远,刀片是否正确显示,...)。 PS : 你应该为你的变量采用 lowerCamelCase 语法
  • Blade.position = CGPointZero 会将刀片放置在与Handle 相同的位置,因为子节点的位置是相对于其父节点的。

标签: swift sprite-kit skspritenode addchild


【解决方案1】:

这应该会让你接近你预期的地方。

Blade.position = CGPointMake(0, 124)

请记住,当您将精灵添加到另一个精灵时,位置是该精灵“内部”的位置。如果您不更改从其父级中心开始的锚点。因此,您从 Handle 的中心开始并添加场景的一半宽度。因为 Handle 已经在场景中居中,所以刀片不在场景中。

希望这是有道理且有帮助的。

正如 lchamp 提到的,你应该降低 CamelCase

var Blade = SKSpriteNode(imageNamed: "Blade.png") 

这将帮助您在未来识别类与变量。

【讨论】:

  • 是的!谢谢!你所做的工作完美。感谢您的帮助
猜你喜欢
  • 2015-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-20
相关资源
最近更新 更多