如何在swift中向自己的孩子添加子孩子

如何在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) 
} 
+0

你可以尝试这样做:'Blade.position = CGPointMake(Handle.frame.width/2,Handle.frame.height/2)'。它应该出现在Handle节点的中心。看看是否:放置刀片的位置太远,刀片显示正确,...)。 _PS:您应该为变量采用lowerCamelCase语法_ – lchamp

+0

'Blade.position = CGPointZero'会将刀片放置在与Handle相同的位置,因为子节点的位置相对于其父节点。 – 0x141E

这应该让你接近你的预期。

Blade.position = CGPointMake(0, 124) 

请记住,当您将一个精灵添加到另一个精灵时,位置就是该精灵的“内部”位置。如果您不更改从父级中心开始的锚点。所以你从Handle的中心开始,增加场景的一半宽度。由于Handle已经集中在场景中,刀片已经离开现场。

希望这是有道理的,是有益的。

另外,作为lchamp提到你应该lowerCamelCase

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

这将帮助你在未来的识别类VS变量。

+0

是的!谢谢!你做了什么完美的工作。感谢您的帮助 – Lahav

+0

@Lahav很高兴听到它。随时将此答案标记为已接受。 :) –