phaser/examples/groups/recyling.js
2013-10-22 03:58:20 +01:00

62 lines
1.6 KiB
JavaScript

var game = new Phaser.Game(800, 600, Phaser.CANVAS, 'phaser-example', { preload: preload, create: create, render: render });
var enemies;
function preload() {
game.load.image('baddie', 'assets/sprites/space-baddie.png');
game.load.spritesheet('button', 'assets/buttons/baddie-buttons.png', 224, 70);
}
function create() {
// Create a enemies group to store the baddies
enemies = game.add.group();
// Create some enemies.
for (var i = 0; i < 8; i++)
{
// Since the getFirstExists() which we'll use for recycling
// cannot allocate new objects, create them manually here.
enemies.create(360 + Math.random() * 200, 120 + Math.random() * 200, 'baddie');
}
// Create buttons to create and kill baddies.
game.add.button(16, 50, 'button', createBaddie,this, 0, 0, 0);
game.add.button(16, 130, 'button', killBaddie,this, 1, 1, 1);
}
function killBaddie() {
var baddie = enemies.getFirstAlive();
if (baddie)
{
baddie.kill();
}
}
function createBaddie() {
// Recycle using getFirstExists(false)
// Notice that this method will not create new objects if there's no one
// available, and it won't change size of this group.
var enemy = enemies.getFirstExists(false);
if (enemy)
{
enemy.revive();
}
}
function render() {
game.debug.renderText('Recycle baddies from a group using getFirstExists.', 16, 24);
game.debug.renderText('Notice that you cannot add more than 8 baddies since we only create 8 instance.', 16, 36);
game.debug.renderText('Living baddies: ' + (enemies.countLiving()), 340, 420);
}