From 54d98944e4d2eea2c8b6978fc7ec9c18a4b61cce Mon Sep 17 00:00:00 2001 From: Richard Davey Date: Fri, 30 Aug 2013 18:56:10 +0100 Subject: [PATCH] Mummy attack :) --- examples/sprite2.php | 15 ++++++---- examples/sprite3.php | 61 +++++++++++++++++++++++++++++++++++++++ src/core/Game.js | 40 ++++--------------------- src/core/StateManager.js | 37 +++++++++++++++--------- src/core/World.js | 10 +++++++ src/gameobjects/Sprite.js | 2 +- 6 files changed, 112 insertions(+), 53 deletions(-) create mode 100644 examples/sprite3.php diff --git a/examples/sprite2.php b/examples/sprite2.php index f9dffc4d..79244eb2 100644 --- a/examples/sprite2.php +++ b/examples/sprite2.php @@ -25,21 +25,26 @@ function create() { - bunny = game.add.sprite(-40, 100, 'ms'); + bunny = game.add.sprite(40, 100, 'ms'); bunny.animations.add('walk'); bunny.animations.play('walk', 50, true); - // bunny.scale.x = 8; - // bunny.scale.y = 8; - game.add.tween(bunny).to({ x: game.width }, 10000, Phaser.Easing.Linear.None, true); } + // update isn't called until 'create' has completed. If you need to process stuff before that point (i.e. while the preload is still happening) + // then create a function called loadUpdate() and use that function update() { - bunny.postUpdate(); + + if (bunny.x >= 300) + { + bunny.scale.x += 0.01; + bunny.scale.y += 0.01; + } + } })(); diff --git a/examples/sprite3.php b/examples/sprite3.php new file mode 100644 index 00000000..4287cc4f --- /dev/null +++ b/examples/sprite3.php @@ -0,0 +1,61 @@ + + + + phaser.js - a new beginning + + + + + + + + \ No newline at end of file diff --git a/src/core/Game.js b/src/core/Game.js index e5d4c07b..70da520b 100644 --- a/src/core/Game.js +++ b/src/core/Game.js @@ -243,7 +243,8 @@ Phaser.Game.prototype = { return; } - if (!document.body) { + if (!document.body) + { window.setTimeout(this._onBoot, 20); } else @@ -351,42 +352,13 @@ Phaser.Game.prototype = { // this.stage.update(); // this.sound.update(); // this.physics.update(); - // this.world.update(); - + this.world.update(); + this.state.update(); this.plugins.update(); - if (this._loadComplete) - { - this.state.update(); - - // this.world.postUpdate(); - this.plugins.postUpdate(); - this.plugins.preRender(); + this.renderer.render(this.world._stage); - this.state.preRender(); - - this.renderer.render(this.world._stage); - - this.plugins.render(); - - this.state.render(); - - this.plugins.postRender(); - } - else - { - // Still loading assets - this.state.loadUpdate(); - - // this.world.postUpdate(); - this.plugins.postUpdate(); - - this.plugins.preRender(); - this.renderer.render(this.world._stage); - this.plugins.render(); - this.state.loadRender(); - this.plugins.postRender(); - } + this.plugins.postRender(); }, diff --git a/src/core/StateManager.js b/src/core/StateManager.js index d30a752f..fae9fef9 100644 --- a/src/core/StateManager.js +++ b/src/core/StateManager.js @@ -24,6 +24,12 @@ Phaser.StateManager.prototype = { */ _pendingState: null, + /** + * Flag that sets if the State has been created or not. + * @type {Boolean} + */ + _created: false, + /** * The state to be switched to in the next frame. * @type {Object} @@ -257,6 +263,8 @@ Phaser.StateManager.prototype = { { this.onCreateCallback.call(this.callbackContext); } + + this._created = true; } else { @@ -275,6 +283,8 @@ Phaser.StateManager.prototype = { this.onCreateCallback.call(this.callbackContext); } + this._created = true; + this.game.loadComplete(); } @@ -336,6 +346,7 @@ Phaser.StateManager.prototype = { this.onShutDownCallback = this.states[key]['shutdown'] || this.dummy; this.current = key; + this._created = false; this.onInitCallback.call(this.callbackContext); @@ -345,22 +356,15 @@ Phaser.StateManager.prototype = { // console.log('Phaser.StateManager.loadComplete'); - if (this.onCreateCallback) { + if (this._created == false && this.onCreateCallback) + { // console.log('Create callback found'); this.onCreateCallback.call(this.callbackContext); + this._created = true; } }, - loadUpdate: function () { - - if (this.onLoadUpdateCallback) - { - this.onLoadUpdateCallback.call(this.callbackContext); - } - - }, - loadRender: function () { if (this.onLoadRenderCallback) @@ -372,9 +376,16 @@ Phaser.StateManager.prototype = { update: function () { - if (this.onUpdateCallback) - { - this.onUpdateCallback.call(this.callbackContext); + if (this._created && this.onUpdateCallback) + { + this.onUpdateCallback.call(this.callbackContext); + } + else + { + if (this.onLoadUpdateCallback) + { + this.onLoadUpdateCallback.call(this.callbackContext); + } } }, diff --git a/src/core/World.js b/src/core/World.js index 4171910f..cc8bf05a 100644 --- a/src/core/World.js +++ b/src/core/World.js @@ -16,6 +16,7 @@ Phaser.World.prototype = { _stage: null, _container: null, + _length: 0, bounds: null, @@ -38,6 +39,15 @@ Phaser.World.prototype = { return gameobject; }, + update: function () { + + for (var child in this._container.children) + { + this._container.children[child].update(); + } + + }, + /** * Updates the size of this world. * diff --git a/src/gameobjects/Sprite.js b/src/gameobjects/Sprite.js index 792f4342..48a7ffa1 100644 --- a/src/gameobjects/Sprite.js +++ b/src/gameobjects/Sprite.js @@ -109,7 +109,7 @@ Phaser.Sprite.prototype.constructor = Phaser.Sprite; /** * Automatically called after update() by the game loop for all 'alive' objects. */ -Phaser.Sprite.prototype.postUpdate = function() { +Phaser.Sprite.prototype.update = function() { this.animations.update(); // this.checkBounds();