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}