如何在swift中向自己的孩子添加子孩子
问题描述:
我试图在swift中添加两个各自具有各自材质的SKSpriteNodes,但是在模拟过程中“刀片”不会显示在屏幕上。虽然我可以毫无困难地让“手柄”出现。所以我的问题是,如何快速添加一个自己的孩子的孩子,以便一切按预期工作?如何在swift中向自己的孩子添加子孩子
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(0, 124)
请记住,当您将一个精灵添加到另一个精灵时,位置就是该精灵的“内部”位置。如果您不更改从父级中心开始的锚点。所以你从Handle的中心开始,增加场景的一半宽度。由于Handle已经集中在场景中,刀片已经离开现场。
希望这是有道理的,是有益的。
另外,作为lchamp提到你应该lowerCamelCase
var Blade = SKSpriteNode(imageNamed: "Blade.png")
这将帮助你在未来的识别类VS变量。
+0
是的!谢谢!你做了什么完美的工作。感谢您的帮助 – Lahav
+0
@Lahav很高兴听到它。随时将此答案标记为已接受。 :) –
你可以尝试这样做:'Blade.position = CGPointMake(Handle.frame.width/2,Handle.frame.height/2)'。它应该出现在Handle节点的中心。看看是否:放置刀片的位置太远,刀片显示正确,...)。 _PS:您应该为变量采用lowerCamelCase语法_ – lchamp
'Blade.position = CGPointZero'会将刀片放置在与Handle相同的位置,因为子节点的位置相对于其父节点。 – 0x141E