diff --git a/src/core/display/Container.js b/src/core/display/Container.js index ac205fe..d037edd 100644 --- a/src/core/display/Container.js +++ b/src/core/display/Container.js @@ -130,6 +130,9 @@ child.parent = this; this.children.splice(index, 0, child); + + child.emit('added', this); + return child; } else @@ -247,6 +250,8 @@ child.parent = null; this.children.splice(index, 1); + child.emit('removed', this); + return child; }; diff --git a/src/core/display/Container.js b/src/core/display/Container.js index ac205fe..d037edd 100644 --- a/src/core/display/Container.js +++ b/src/core/display/Container.js @@ -130,6 +130,9 @@ child.parent = this; this.children.splice(index, 0, child); + + child.emit('added', this); + return child; } else @@ -247,6 +250,8 @@ child.parent = null; this.children.splice(index, 1); + child.emit('removed', this); + return child; }; diff --git a/test/unit/core/display/Container.test.js b/test/unit/core/display/Container.test.js new file mode 100644 index 0000000..a137c58 --- /dev/null +++ b/test/unit/core/display/Container.test.js @@ -0,0 +1,42 @@ +describe('PIXI.Container', function () { + describe('parent', function () { + it('should be present when adding children to Container', function() { + var container = new PIXI.Container(), + child = new PIXI.DisplayObject(); + + expect(container.children.length).to.be.equals(0); + container.addChild(child); + expect(container.children.length).to.be.equals(1); + expect(child.parent).to.be.equals(container); + }); + }); + + describe('events', function () { + it('should trigger "added" and "removed" events on it\'s children', function () { + var container = new PIXI.Container(), + child = new PIXI.DisplayObject(), + triggeredAdded = false, + triggeredRemoved = false; + + child.on('added', function(to) { + triggeredAdded = true; + expect(container.children.length).to.be.equals(1); + expect(child.parent).to.be.equals(to); + }); + child.on('removed', function(from) { + triggeredRemoved = true; + expect(container.children.length).to.be.equals(0); + expect(child.parent).to.be.null(); + expect(container).to.be.equals(from); + }); + + container.addChild(child); + expect(triggeredAdded).to.be.true(); + expect(triggeredRemoved).to.be.false(); + + container.removeChild(child); + expect(triggeredRemoved).to.be.true(); + }); + + }); +});