2016-11-21 33 views
2

有沒有這個命令的複數版本,所以我可以輸入一個要添加的孩子列表?SpriteKit addChild(node:SKNode)plural?

有點像:

addChildren(myNodeABC, myNodeXYZ, myNode123) 
+0

沒有,你將不得不作出自己的 – Knight0fDragon

+0

哎呀,太好了, @ Knight0fDragon。我會嘗試使用我所收集的擴展名,然後在這裏發佈,以供您在做完之後輕聲笑起...... – Confused

+0

但是不要屏住呼吸,我還有其他一些事情要做,可能會有幾天,或者在我接近它之前的幾個星期。這只是編碼時間;) – Confused

回答

5

編寫擴展做到這一點:(我寫它的斯威夫特3風格,我沒有可用的XCode現在來驗證這個工程

extension SKNode 
{ 
    func add(children: SKNode...) { 
     for child in children{ 
      addChild(child) 
     } 
    } 
} 

用法:

node.add(children:node1,node2,node3) 

注: ...點的情況下,被稱爲可變參數的參數,你想知道更多關於他們:https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Functions.html

如果你想使用更少的線,這樣做:

extension SKNode 
{ 
    func add(children: SKNode...) { 
     children.forEach({addChild($0)}); 
    } 
} 
+1

哇。 variadic非常酷。就像即時陣列一樣,無需創建一個。 – Confused

+2

是的,從C開始就已經存在,因爲命令行應用程序需要一種方法來接受可變數量的參數 – Knight0fDragon

+1

您是傳奇!在你最好的時候,你是最棒的! – Confused