2015-07-12 126 views
2

我試圖在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

回答

1

這應該讓你接近你的預期。

Blade.position = CGPointMake(0, 124) 

請記住,當您將一個精靈添加到另一個精靈時,位置就是該精靈的「內部」位置。如果您不更改從父級中心開始的錨點。所以你從Handle的中心開始,增加場景的一半寬度。由於Handle已經集中在場景中,刀片已經離開現場。

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

另外,作爲lchamp提到你應該lowerCamelCase

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

這將幫助你在未來的識別類VS變量。

+0

是的!謝謝!你做了什麼完美的工作。感謝您的幫助 – Lahav

+0

@Lahav很高興聽到它。隨時將此答案標記爲已接受。 :) –