New Group.destroy example and patched the desyrel font xml.

This commit is contained in:
photonstorm 2013-12-30 21:36:50 +00:00
parent ce4cf531d4
commit ba74bea4b4
6 changed files with 103 additions and 12 deletions

View file

@ -107,6 +107,7 @@ Updates:
* You can now collide a group against itself, to have all children collide, and bodies won't check against themselves (thanks cocoademon)
* RenderTexture.render / renderXY has a new parameter: renderHidden, a boolean which will allow you to render Sprites even if their visible is set to false.
* Added in prototype.constructor definitions to every class (thanks darkoverlordofdata)
* Group.destroy has a new parameter: destroyChildren (boolean) which will optionally call the destroy method of all Group children.
Bug Fixes:
@ -124,6 +125,8 @@ Bug Fixes:
* RenderTexture now displays correctly in Canvas games.
* Canvas.addToDOM is now more robust when applying the overflowHidden style.
* Fixed Pixi.StripShader which should stop the weird TileSprite GPU issues some were reporting (thanks GoodboyDigital)
* Patched desyrel.xml so it doesn't contain any zero width/height characters, as they broke Firefox 25.
You can view the Change Log for all previous versions at https://github.com/photonstorm/phaser/changelog.md
@ -291,6 +294,7 @@ Beyond version 1.2
* Create more touch input examples (http://www.html5gamedevs.com/topic/1556-mobile-touch-event/)
* Look at HiDPI Canvas settings.
* Support for parallel asset loading.
* Fixed width bitmap font support, plus enhanced Bitmap font rendering.
Contributing

View file

@ -99,7 +99,7 @@
<char id="46" x="214" y="391" width="13" height="13" xoffset="3" yoffset="54" xadvance="11" page="0" chnl="0" letter="."/>
<char id="95" x="228" y="391" width="46" height="12" xoffset="-2" yoffset="63" xadvance="35" page="0" chnl="0" letter="_"/>
<char id="45" x="275" y="391" width="29" height="11" xoffset="9" yoffset="46" xadvance="34" page="0" chnl="0" letter="-"/>
<char id="32" x="305" y="391" width="0" height="0" xoffset="23" yoffset="81" xadvance="23" page="0" chnl="0" letter="space"/>
<char id="32" x="305" y="391" width="1" height="1" xoffset="23" yoffset="81" xadvance="23" page="0" chnl="0" letter="space"/>
</chars>
<kernings count="1816">
<kerning first="102" second="102" amount="2"/>

View file

@ -0,0 +1,54 @@
var game = new Phaser.Game(800, 600, Phaser.CANVAS, 'phaser-example', { preload: preload, create: create, render: render });
function preload() {
game.load.image('atari1', 'assets/sprites/atari130xe.png');
game.load.image('atari2', 'assets/sprites/atari800xl.png');
game.load.image('atari4', 'assets/sprites/atari800.png');
game.load.image('sonic', 'assets/sprites/sonic_havok_sanity.png');
game.load.image('duck', 'assets/sprites/darkwing_crazy.png');
game.load.image('firstaid', 'assets/sprites/firstaid.png');
game.load.image('diamond', 'assets/sprites/diamond.png');
game.load.image('mushroom', 'assets/sprites/mushroom2.png');
}
var group;
var sprite;
function create() {
var images = game.cache.getImageKeys();
group = game.add.group();
for (var i = 0; i < 20; i++)
{
sprite = group.create(game.world.randomX, game.world.randomY, game.rnd.pick(images));
}
sprite.x = 100;
sprite.y = 100;
game.add.tween(sprite).to( { y: 200 }, 2000, Phaser.Easing.Linear.None, true, 0, 1000, true);
game.input.onDown.addOnce(nuke, this);
}
function nuke() {
// The optional parameter here will destroy the Sprites as well as the Group.
// The default is 'false' which means destroy the Group, but none of the children.
group.destroy(true);
console.log(group);
console.log(sprite);
}
function render() {
game.debug.renderText('Click to nuke', 32, 32);
}

View file

@ -1338,11 +1338,31 @@ Phaser.Group.prototype = {
* Destroys this Group. Removes all children, then removes the container from the display list and nulls references.
*
* @method Phaser.Group#destroy
* @param {boolean} [destroyChildren=false] - Should every child of this Group have its destroy method called?
*/
destroy: function () {
destroy: function (destroyChildren) {
this.removeAll();
if (typeof destroyChildren === 'undefined') { destroyChildren = false; }
if (destroyChildren)
{
if (this._container.children.length > 0)
{
do
{
if (this._container.children[0].group)
{
this._container.children[0].destroy();
}
}
while (this._container.children.length > 0);
}
}
else
{
this.removeAll();
}
this._container.parent.removeChild(this._container);
this._container = null;
@ -1505,7 +1525,16 @@ Phaser.Group.prototype.constructor = Phaser.Group;
Object.defineProperty(Phaser.Group.prototype, "total", {
get: function () {
return this.iterate('exists', true, Phaser.Group.RETURN_TOTAL);
if (this._container)
{
return this.iterate('exists', true, Phaser.Group.RETURN_TOTAL);
}
else
{
return 0;
}
}
});
@ -1518,7 +1547,16 @@ Object.defineProperty(Phaser.Group.prototype, "total", {
Object.defineProperty(Phaser.Group.prototype, "length", {
get: function () {
return this._container.children.length;
if (this._container)
{
return this._container.children.length;
}
else
{
return 0;
}
}
});

View file

@ -120,11 +120,6 @@ Phaser.BitmapText = function (game, x, y, text, style) {
this._cache.x = this.x;
this._cache.y = this.y;
/**
* @property {boolean} renderable - A renderable object will be rendered to the context each frame.
*/
this.renderable = true;
};
Phaser.BitmapText.prototype = Object.create(PIXI.BitmapText.prototype);
@ -153,8 +148,8 @@ Phaser.BitmapText.prototype.update = function() {
this._cache.dirty = true;
}
this.pivot.x = this.anchor.x*this.width;
this.pivot.y = this.anchor.y*this.height;
this.pivot.x = this.anchor.x * this.width;
this.pivot.y = this.anchor.y * this.height;
}