2014-10-30 148 views
0

我有一個數組有30個SKSpriteNodes。我想每次將一個節點添加到場景中,並且延遲時間很短。這是我迄今爲止所做的,但它瞬間添加了所有的精靈。如何將對象從一個數組添加到場景中?

for var i = 0; i < 31; i++ { 

     var boardPiece = SKShapeNode() 
     boardPiece = addBigRedCircle() 
     redPiecesArray.addObject(boardPiece) 
     self.addChild(redPiecesArray.objectAtIndex(i) as SKNode) 

     } 

我該如何有效地從數組1中添加這些對象? (如果你知道如何用Obj-C做這件事,這將有助於我可以弄清楚如何用Swift說同樣的事情)

回答

0

如何使用GCD?這是Swift中的一件事嗎?

for var i = 0; i < 31; i++ { 
    dispatch_after((Int64)(i * delayInSeconds * NSEC_PER_SEC), dispatch_get_main_queue(), {  
    var boardPiece = SKShapeNode() 
    boardPiece = addBigRedCircle() 
    redPiecesArray.addObject(boardPiece) 
    self.addChild(redPiecesArray.objectAtIndex(i) as SKNode) 
    }) 
} 

(基於https://stackoverflow.com/a/24034838/2708650dispatch_after修改結構)

+0

我還是真正的新雨燕的OBJ-C。我查了一下,Swift的GCD絕對可以。不幸的是,我只是不明白GCD.http://fruitstandsoftware.com/blog/2014/06/09/gcd-in-swift-it-just-works/ – 2014-10-30 16:08:27

+0

你是否試着運行我在那裏寫的代碼?看起來這些函數應該仍然存在於Swift中的這個API中。我沒有在Swift中開發,所以我沒有可以測試的沙箱。 – 2014-10-30 16:16:43

+0

是的,我試着粘貼你的代碼。但是Swift似乎沒有int64_t,但它確實有Int64。所以當我嘗試使用Int64時,出現錯誤「Can not invoke'*'with type of''(dispatch_time_t,dispatch_queue_t!,() - >() - > $ T15)' – 2014-10-30 16:26:35

相關問題