diff --git a/README.md b/README.md index 368c0e83..4d74f04b 100644 --- a/README.md +++ b/README.md @@ -123,6 +123,8 @@ Version 1.0.7 (in progress in the dev branch) * Fixed an issue where creating an animation with just one frame with an index of zero would cause a UUID error (thanks SYNYST3R1) * Fixed Rectangle.union (thanks andron77) * Debug.renderSpriteBody updated to use a the new Sprite.Body.screenX/Y properties. +* Added Text.destroy() and BitmapText.destroy(), also updated Group.remove to make it more bullet-proof when an element doesn't have any events. + diff --git a/examples/text/hello arial.php b/examples/text/hello arial.php index 08af3581..bd91da7c 100644 --- a/examples/text/hello arial.php +++ b/examples/text/hello arial.php @@ -5,8 +5,6 @@ + + + + \ No newline at end of file diff --git a/src/core/Group.js b/src/core/Group.js index 0bbaf228..dc6b3007 100644 --- a/src/core/Group.js +++ b/src/core/Group.js @@ -936,8 +936,13 @@ Phaser.Group.prototype = { */ remove: function (child) { - child.events.onRemovedFromGroup.dispatch(child, this); + if (child.events) + { + child.events.onRemovedFromGroup.dispatch(child, this); + } + this._container.removeChild(child); + child.group = null; }, diff --git a/src/gameobjects/BitmapText.js b/src/gameobjects/BitmapText.js index 75d86595..77fb274a 100644 --- a/src/gameobjects/BitmapText.js +++ b/src/gameobjects/BitmapText.js @@ -145,6 +145,32 @@ Phaser.BitmapText.prototype.update = function() { } +/** +* @method Phaser.Text.prototype.destroy +*/ +Phaser.BitmapText.prototype.destroy = function() { + + if (this.group) + { + this.group.remove(this); + } + + if (this.canvas.parentNode) + { + this.canvas.parentNode.removeChild(this.canvas); + } + else + { + this.canvas = null; + this.context = null; + } + + this.exists = false; + + this.group = null; + +} + /** * Get * @returns {Description} diff --git a/src/gameobjects/Text.js b/src/gameobjects/Text.js index 07aae727..d2c9caca 100644 --- a/src/gameobjects/Text.js +++ b/src/gameobjects/Text.js @@ -114,7 +114,6 @@ Phaser.Text = function (game, x, y, text, style) { Phaser.Text.prototype = Object.create(PIXI.Text.prototype); Phaser.Text.prototype.constructor = Phaser.Text; - /** * Automatically called by World.update. * @method Phaser.Text.prototype.update @@ -140,6 +139,32 @@ Phaser.Text.prototype.update = function() { } +/** +* @method Phaser.Text.prototype.destroy +*/ +Phaser.Text.prototype.destroy = function() { + + if (this.group) + { + this.group.remove(this); + } + + if (this.canvas.parentNode) + { + this.canvas.parentNode.removeChild(this.canvas); + } + else + { + this.canvas = null; + this.context = null; + } + + this.exists = false; + + this.group = null; + +} + /** * Get * @returns {Description}