Animation.looped has been renamed to Animation.loop. It's a boolean you can toggle at run-time to turn on/off animation looping.

A single Animation object now has 3 new events: onStart, onLoop and onComplete.
Animation.loopCount holds the number of times the animation has looped since it last started.
Animation.stop has a new parameter: dispatchComplete. If true it'll dispatch an Animation.onComplete event.
This commit is contained in:
photonstorm
2014-03-03 16:05:55 +00:00
parent 4a370c82cf
commit 833960b3c8
9 changed files with 292 additions and 24 deletions
+69
View File
@@ -0,0 +1,69 @@
var game = new Phaser.Game(800, 600, Phaser.CANVAS, 'phaser-example', { preload: preload, create: create, update: update });
function preload() {
game.load.image('lazur', 'assets/pics/thorn_lazur.png');
game.load.spritesheet('mummy', 'assets/sprites/metalslug_mummy37x45.png', 37, 45, 18);
}
var back;
var mummy;
var anim;
var loopText;
function create() {
game.stage.smoothed = false;
back = game.add.image(0, -400, 'lazur');
back.scale.set(2);
mummy = game.add.sprite(200, 360, 'mummy', 5);
mummy.scale.set(4);
anim = mummy.animations.add('walk');
anim.onStart.add(animationStarted, this);
anim.onLoop.add(animationLooped, this);
anim.onComplete.add(animationStopped, this);
anim.play(10, true);
}
function animationStarted(sprite, animation) {
game.add.text(32, 32, 'Animation started', { fill: 'white' });
}
function animationLooped(sprite, animation) {
if (animation.loopCount === 1)
{
loopText = game.add.text(32, 64, 'Animation looped', { fill: 'white' });
}
else
{
loopText.text = 'Animation looped x2';
animation.loop = false;
}
}
function animationStopped(sprite, animation) {
game.add.text(32, 64+32, 'Animation stopped', { fill: 'white' });
}
function update() {
if (anim.isPlaying)
{
back.x -= 1;
}
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

+2 -3
View File
@@ -42,9 +42,7 @@ function update() {
// This creates a simple sine-wave effect running through our BitmapData.
// This is then duplicated across all 100 sprites using it, meaning we only have to calculate it and upload it to the GPU once.
function updateWobblyBall()
{
function updateWobblyBall() {
var s = 0;
var copyRect = { x: 0, y: 0, w: wavePixelChunk, h: 32 };
@@ -76,4 +74,5 @@ function updateWobblyBall()
{
waveDataCounter = 0;
}
}
+69
View File
@@ -0,0 +1,69 @@
var game = new Phaser.Game(800, 600, Phaser.CANVAS, 'phaser-example', { preload: preload, create: create, update: update });
function preload() {
game.load.image('lazur', 'assets/pics/thorn_lazur.png');
game.load.spritesheet('mummy', 'assets/sprites/metalslug_mummy37x45.png', 37, 45, 18);
}
var back;
var mummy;
var anim;
var loopText;
function create() {
game.stage.smoothed = false;
back = game.add.image(0, -400, 'lazur');
back.scale.set(2);
mummy = game.add.sprite(200, 360, 'mummy', 5);
mummy.scale.set(4);
anim = mummy.animations.add('walk');
anim.onStart.add(animationStarted, this);
anim.onLoop.add(animationLooped, this);
anim.onComplete.add(animationStopped, this);
anim.play(10, true);
}
function animationStarted(sprite, animation) {
game.add.text(32, 32, 'Animation started', { fill: 'white' });
}
function animationLooped(sprite, animation) {
if (animation.loopCount === 1)
{
loopText = game.add.text(32, 64, 'Animation looped', { fill: 'white' });
}
else
{
loopText.text = 'Animation looped x2';
animation.loop = false;
}
}
function animationStopped(sprite, animation) {
game.add.text(32, 64+32, 'Animation stopped', { fill: 'white' });
}
function update() {
if (anim.isPlaying)
{
back.x -= 1;
}
}
+89
View File
@@ -0,0 +1,89 @@
var game = new Phaser.Game(800, 600, Phaser.CANVAS, 'phaser-example', { preload: preload, create: create, update: update, render: render });
// var game = new Phaser.Game(800, 600, Phaser.AUTO, 'phaser-example', { preload: preload, create: create, update: update, render: render });
function preload() {
game.load.tilemap('map', 'assets/tilemaps/maps/collision_test.json', null, Phaser.Tilemap.TILED_JSON);
game.load.image('ground_1x1', 'assets/tilemaps/tiles/ground_1x1.png');
game.load.image('walls_1x2', 'assets/tilemaps/tiles/walls_1x2.png');
game.load.image('tiles2', 'assets/tilemaps/tiles/tiles2.png');
game.load.image('player', 'assets/sprites/phaser-dude.png');
game.load.image('box', 'assets/sprites/ufo.png');
game.load.image('ship', 'assets/sprites/thrust_ship2.png');
}
var ship;
var map;
var tileset;
var layer;
var p;
var b;
var cursors;
var box2;
var dump;
function create() {
game.renderer.roundPixels = true;
// game.stage.backgroundColor = '#787878';
map = game.add.tilemap('map');
map.addTilesetImage('ground_1x1');
map.addTilesetImage('walls_1x2');
map.addTilesetImage('tiles2');
layer = map.createLayer('Tile Layer 1');
layer.resizeWorld();
map.setCollisionBetween(1, 12);
layer.debug = true;
// dump = map.generateCollisionData(layer);
box2 = game.add.sprite(200, 200, 'box');
box2.physicsEnabled = true;
box2.body.fixedRotation = true;
game.camera.follow(box2);
cursors = game.input.keyboard.createCursorKeys();
}
function update() {
if (cursors.left.isDown)
{
box2.body.moveLeft(200);
}
else if (cursors.right.isDown)
{
box2.body.moveRight(200);
}
else
{
box2.body.setZeroVelocity();
}
if (cursors.up.isDown)
{
box2.body.moveUp(200);
}
else if (cursors.down.isDown)
{
box2.body.moveDown(200);
}
}
function render() {
}