2017-01-02 46 views
3

在我的應用程序中,對於一個屏幕,我設置了大小並將SpriteKit節點的背景居中。例如,我設置的背景子視圖的尺寸如下:如何修改Swift中SpriteKit節點的大小?

backgroundNode.size = self.frame.size 

雖然這是工作的iPhone 6 Plus上,較小的屏幕/所述iPhone 5的較低分辨率意味着默認其他節點的尺寸太大而不適合其場景。

如何強制其他節點符合背景節點的大小? 我想將每個子視圖的大小除以背景子視圖的大小,但數學運算不能直接在size屬性上完成。

回答

4

SpriteKit場景(SKScene)包含節點,節點(SKNode),其具有sizeposition性質(CGSize類型和CGPoint的,分別地)。同樣在iOS中,UIViewframe屬性是一個CGRect對象,它包含CGSizeCGPoint對象。因此,瞭解如何使用CGSizeCGPoint確實有幫助。

原因SKNode的大小和位置是類似於具有多個字段的簡單C結構,因爲它們是「複合類型」,即它們都包含多個值。例如,CGSize包含widthheight屬性,而CGPoint包含xy屬性。

因此,如果要調整節點的大小和位置(或者對於UIView,通過其屬性frame),則需要額外的步驟來訪問屬性。

如果要分割大小,則必須分別訪問CGSize類的widthheight屬性。

一種方式來做到這一點是大小在一個操作中分配:

node.size = CGSize(width: node.size.width/backgroundNode.size.width, 
    height: node.size.height/backgroundNode.size.height) 

或者你也可以這樣做,而不是:

node.size.width = node.size.width/backgroundNode.size.width 
node.size.height = node.size.height/backgroundNode.size.height 
+0

你先生是一個傳奇frieking!生病試試吧,現在! –

+0

這個壽命有多有效?我覺得基礎的大小和位置的背景或背後的節點似乎是如此完美,但我想知道它的侷限性 –

+0

有點超出了問題的範圍。我只是說明*如何做到這一點,而不是建議它是否應該完成或者是否適當地調整你的精靈。我不認爲劃分是正確的,因爲背景越小*節點越小。你需要決定你想要什麼效果,優先考慮什麼。我想知道你是否真的想要讓屏幕尺寸變成精靈。可能會更好地保持其相對於眼睛的大小不變,並給予他們更大的空間以在更大的iPhone上移動 – clearlight