2014-06-22 16 views
4

正如它所說的,在Phaser.js中,如何爲組內的每個對象應用動作。我想下面的線適用於每個項目:對Phaser js中的每個對象應用動作

game.physics.arcade.collide(something, platforms); 
game.physics.arcade.overlap(player, something, gameOver, null, this); 
something.body.velocity.x = -120; 

「東西」是對象的名字,但我的組名稱叫「obstacleGroup」。我希望這樣做,因爲我有另一個功能,一直在爲組創建新對象,所以我不一定知道他們被稱爲什麼。

回答

9

您可以使用Group.forEach迭代的對象組中,並呼籲他們的功能:

obstacleGroup.forEach(function(item) { 
    game.physics.arcade.collide(item, platforms); 
    game.physics.arcade.overlap(player, item, gameOver); 
    item.body.velocity.x = -120; 
}, this); 
+0

太棒了,謝謝:) –

+1

@imcg最新的移相器版本要求您將'this'作爲第二個參數傳遞給'forEach'。我更新了你的答案,包括這個。 – ashes999

11

Group.forEach就是這樣一個迭代的方法,你可以使用(如@imcg我之前指出)。但是,您將其用於街機物理碰撞,並且可以將組作爲參數。所以,你可以在你的集團與平臺相撞一切只:

game.physics.arcade.collide(obstacleGroup, platforms);

一次,在你的更新循環。

同樣適用於overlap

+0

非常感謝:) –