我正在繼承SKNode
來渲染由許多SKSpriteNodes
組成的地圖,並將這些節點添加到我的子類中。當繼承SKNode時,Frame屬性應該返回一個非空值嗎?
一切工作正常,但我發現我的節點子類的Frame
始終爲0
在文檔中我找不到這事,所以:我應該重寫Frame
財產和收益一個正確的值?
我正在繼承SKNode
來渲染由許多SKSpriteNodes
組成的地圖,並將這些節點添加到我的子類中。當繼承SKNode時,Frame屬性應該返回一個非空值嗎?
一切工作正常,但我發現我的節點子類的Frame
始終爲0
在文檔中我找不到這事,所以:我應該重寫Frame
財產和收益一個正確的值?
frame屬性是節點本身的框架,忽略任何子節點。對於SKNode,這是一個位置,但寬度和高度都爲零。
如果節點的類繪製內容,則該框架非空。 (https://developer.apple.com/reference/spritekit/sknode)
這我理解爲:SKNode平沒有內容,所以它是正確的它是空的。
節點和其孩子的框架是由需要的子樹應該呼叫的幀,而不是參考幀屬性的方法calculateAccumulatedFrame()和功能提供。
所以應該不需要覆蓋你的SKNode的幀。我從來沒有,在幾個應用程序有類似的結構 ,並且還沒有問題...
有道理。什麼是「繪製內容」節點的例子? – Krumelur
@Krumelur:SKSpriteNode或SKLabelNode - 都從SKNode繼承,但具有可繪製內容,因此根據該內容將具有寬度和高度。 –
你能澄清'框架...總是0嗎?框架應該是一個CGRect結構,因此不能爲零。通常對於SKNode,框架將具有有效位置,但寬度和高度均爲零。如果它本身在場景中的位置爲0,0,則其所有成員都將爲零。這是正常的,不需要重寫幀。如果你想要它的子框架,然後使用方法calculateAccumulatedFrame。 –
我的意思是寬度和高度均爲0。我注意到SKSpriteNode有一個有效的寬度和高度。 – Krumelur