From 59fc91dbe732514ce3a794ceb5c53e62bf2f1e92 Mon Sep 17 00:00:00 2001 From: Louis Acresti Date: Thu, 5 Dec 2013 20:45:21 -0500 Subject: [PATCH 1/6] swapChildren basic implementation --- src/pixi/display/DisplayObjectContainer.js | 43 ++++++---------------- 1 file changed, 11 insertions(+), 32 deletions(-) diff --git a/src/pixi/display/DisplayObjectContainer.js b/src/pixi/display/DisplayObjectContainer.js index bb972f4..1d54df9 100644 --- a/src/pixi/display/DisplayObjectContainer.js +++ b/src/pixi/display/DisplayObjectContainer.js @@ -214,43 +214,22 @@ PIXI.DisplayObjectContainer.prototype.addChildAt = function(child, index) */ PIXI.DisplayObjectContainer.prototype.swapChildren = function(child, child2) { - /* - * this funtion needs to be recoded.. - * can be done a lot faster.. - */ - return; + var index1 = this.children.indexOf(child); + var index2 = this.children.indexOf(child2); + + this.removeChild(child); + this.removeChild(child2); - // need to fix this function :/ - /* - // TODO I already know this?? - var index = this.children.indexOf( child ); - var index2 = this.children.indexOf( child2 ); - - if ( index !== -1 && index2 !== -1 ) + if(index1 < index2) { - // cool - - /* - if(this.stage) - { - // this is to satisfy the webGL batching.. - // TODO sure there is a nicer way to achieve this! - this.stage.__removeChild(child); - this.stage.__removeChild(child2); - - this.stage.__addChild(child); - this.stage.__addChild(child2); - } - - // swap the positions.. - this.children[index] = child2; - this.children[index2] = child; - + this.addChildAt(child2, index1); + this.addChildAt(child, index2); } else { - throw new Error(child + " Both the supplied DisplayObjects must be a child of the caller " + this); - }*/ + this.addChildAt(child, index2); + this.addChildAt(child2, index1); + } } /** From 8c5f4a6d77c5bfbf1059eff560f3ed5a911ecece Mon Sep 17 00:00:00 2001 From: Louis Acresti Date: Thu, 5 Dec 2013 20:54:47 -0500 Subject: [PATCH 2/6] simple swapChildren example/test --- examples/swapChildren/bunny.png | Bin 0 -> 449 bytes examples/swapChildren/index.html | 71 +++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 examples/swapChildren/bunny.png create mode 100644 examples/swapChildren/index.html diff --git a/examples/swapChildren/bunny.png b/examples/swapChildren/bunny.png new file mode 100644 index 0000000000000000000000000000000000000000..79c31675083b7ffc272a6370bc189360bde484d0 GIT binary patch literal 449 zcmV;y0Y3hTP)SOJFMz`0@qn1GK$9W|wOohG3Lai}FkWLtiT<2<{JbM8>W7|R$! zUuNqg#gmKmsTnILy&K;zJjd^_40xy)%EA1>FWWk~LFpr>Et|!Hv(V>Hs9!2xEQJ>~!qz76HLsxFXdG zs5~GjUDeD6dXvG$_#HtoUok|M-X@BSTy{VK4P?TJZcz}O&FVzD0fZu8Yajr@?2aYL r_Q@_>J=ju&>AqoA-=wzwF98MsNX4 + + + pixi.js example 1 + + + + + + + + + From 6a405543098e7dbc6f8fa265a191ecd876e9464f Mon Sep 17 00:00:00 2001 From: Louis Acresti Date: Thu, 5 Dec 2013 21:05:57 -0500 Subject: [PATCH 3/6] removed example from main swap branch --- examples/swapChildren/bunny.png | Bin 449 -> 0 bytes examples/swapChildren/index.html | 71 ------------------------------- 2 files changed, 71 deletions(-) delete mode 100644 examples/swapChildren/bunny.png delete mode 100644 examples/swapChildren/index.html diff --git a/examples/swapChildren/bunny.png b/examples/swapChildren/bunny.png deleted file mode 100644 index 79c31675083b7ffc272a6370bc189360bde484d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 449 zcmV;y0Y3hTP)SOJFMz`0@qn1GK$9W|wOohG3Lai}FkWLtiT<2<{JbM8>W7|R$! zUuNqg#gmKmsTnILy&K;zJjd^_40xy)%EA1>FWWk~LFpr>Et|!Hv(V>Hs9!2xEQJ>~!qz76HLsxFXdG zs5~GjUDeD6dXvG$_#HtoUok|M-X@BSTy{VK4P?TJZcz}O&FVzD0fZu8Yajr@?2aYL r_Q@_>J=ju&>AqoA-=wzwF98MsNX4 - - - pixi.js example 1 - - - - - - - - - From 99bf7d62f16eea1c5dc9cba928aa59a6b72aa223 Mon Sep 17 00:00:00 2001 From: Louis Acresti Date: Fri, 6 Dec 2013 00:45:37 -0500 Subject: [PATCH 4/6] early-out for self-swap --- src/pixi/display/DisplayObjectContainer.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pixi/display/DisplayObjectContainer.js b/src/pixi/display/DisplayObjectContainer.js index 1d54df9..fc8841a 100644 --- a/src/pixi/display/DisplayObjectContainer.js +++ b/src/pixi/display/DisplayObjectContainer.js @@ -214,6 +214,10 @@ PIXI.DisplayObjectContainer.prototype.addChildAt = function(child, index) */ PIXI.DisplayObjectContainer.prototype.swapChildren = function(child, child2) { + if (child === child2) { + return; + } + var index1 = this.children.indexOf(child); var index2 = this.children.indexOf(child2); From 2c97041de87a65e61ddb8581479050e0d7cce936 Mon Sep 17 00:00:00 2001 From: Louis Acresti Date: Fri, 6 Dec 2013 00:49:06 -0500 Subject: [PATCH 5/6] check for invalid children --- src/pixi/display/DisplayObjectContainer.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/pixi/display/DisplayObjectContainer.js b/src/pixi/display/DisplayObjectContainer.js index fc8841a..9824471 100644 --- a/src/pixi/display/DisplayObjectContainer.js +++ b/src/pixi/display/DisplayObjectContainer.js @@ -217,9 +217,13 @@ PIXI.DisplayObjectContainer.prototype.swapChildren = function(child, child2) if (child === child2) { return; } - + var index1 = this.children.indexOf(child); var index2 = this.children.indexOf(child2); + + if (index1 < 0 || index2 < 0) { + throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller."); + } this.removeChild(child); this.removeChild(child2); From 6a7a33c898347e57110017427e94054c5af88f5d Mon Sep 17 00:00:00 2001 From: Louis Acresti Date: Fri, 6 Dec 2013 00:55:01 -0500 Subject: [PATCH 6/6] style consistency --- src/pixi/display/DisplayObjectContainer.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pixi/display/DisplayObjectContainer.js b/src/pixi/display/DisplayObjectContainer.js index 9824471..eb95624 100644 --- a/src/pixi/display/DisplayObjectContainer.js +++ b/src/pixi/display/DisplayObjectContainer.js @@ -214,14 +214,14 @@ PIXI.DisplayObjectContainer.prototype.addChildAt = function(child, index) */ PIXI.DisplayObjectContainer.prototype.swapChildren = function(child, child2) { - if (child === child2) { + if(child === child2) { return; } var index1 = this.children.indexOf(child); var index2 = this.children.indexOf(child2); - if (index1 < 0 || index2 < 0) { + if(index1 < 0 || index2 < 0) { throw new Error("swapChildren: Both the supplied DisplayObjects must be a child of the caller."); }