@@ -30,33 +30,33 @@ function preload() {
3030
3131 function create() {
3232
33- s = game.add.sprite(600, game.world.centerY , 'sonic');
33+ s = game.add.sprite(600, 100 , 'sonic');
3434 s.name = 'X';
3535
36- a = game.add.child(s, -70, 0 , 'sonic');
37- b = game.add.child(s, -140, 0 , 'sonic');
38- c = game.add.child(s, -210, 0 , 'sonic');
39- d = game.add.child(s, -280, 0 , 'sonic');
40- e = game.add.child(s, -350, 0 , 'sonic');
41- f = game.add.child(s, -420, 0 , 'sonic');
36+ a = game.add.child(s, -70, 200 , 'sonic');
37+ b = game.add.child(s, -140, 200 , 'sonic');
38+ c = game.add.child(s, -210, 200 , 'sonic');
39+ d = game.add.child(s, -280, 200 , 'sonic');
40+ e = game.add.child(s, -350, 200 , 'sonic');
41+ f = game.add.child(s, -420, 200 , 'sonic');
4242
43- a.name = 'a ';
44- b.name = 'b ';
45- c.name = 'c ';
46- d.name = 'd ';
47- e.name = 'e ';
48- f.name = 'f ';
43+ a.name = 'A ';
44+ b.name = 'B ';
45+ c.name = 'C ';
46+ d.name = 'D ';
47+ e.name = 'E ';
48+ f.name = 'F ';
4949
5050 tests = [a,b,c,d,e,f];
5151
5252 game.input.onUp.add(runChange, this);
5353
54- scanList(s );
54+ scanList(game.world._stage );
5555
5656 }
5757
5858 function runChange () {
59- changeOrder(b, c );
59+ changeOrder(e, f );
6060 }
6161
6262 function changeOrder (node1, node2) {
@@ -68,15 +68,31 @@ function changeOrder (node1, node2) {
6868
6969 if (index1 !== -1 && index2 !== -1)
7070 {
71+ // Cache the node values
7172 var node1Prev = node1._iPrev;
7273 var node1Next = node1._iNext;
7374 var node2Prev = node2._iPrev;
7475 var node2Next = node2._iNext;
7576
77+ // Now deep scan search and replace
78+ var displayObject = this.game.world._stage;
79+
80+ var testObject = displayObject.last._iNext;
81+ displayObject = displayObject.first;
82+
83+ do
84+ {
85+
86+ displayObject = displayObject._iNext;
87+
88+ }
89+ while(displayObject != testObject)
90+
91+
7692 // Check for neighbours (cater for any order parameters)
7793 if (node1._iNext == node2)
7894 {
79- console.log('A-B neighbour swap' );
95+ console.log('A-B neighbour swap. Parent is', node1.parent.name, 'tail is', tail.name );
8096
8197 // Starting
8298 // Node 1 (A) Node 2 (B) X C
@@ -88,21 +104,42 @@ function changeOrder (node1, node2) {
88104 // Next: C Next: A Next: B Next: D
89105 // Prev: B Prev: X Prev: - Prev: A
90106
91- node1._iNext = node2Next;
92- node1._iPrev = node2;
93- node2._iNext = node1;
94- node2._iPrev = node1Prev;
95-
96- // Notify the head and tail
97- if (node1Prev)
107+ // Was node2 a tail node?
108+ /*
109+ if (node2 === tail)
98110 {
99- node1Prev._iNext = node2;
111+ node2._iNext = node1;
112+ node2._iPrev = node1Prev;
113+ node1._iNext = null;
114+ node1._iPrev = node2;
115+
116+ // Notify the head and tail
117+ if (node1Prev)
118+ {
119+ node1Prev._iNext = node2;
120+ }
121+
122+ node1.parent.last = node1;
100123 }
101-
102- if (node2Next)
124+ else
103125 {
104- node2Next._iPrev = node1;
105- }
126+ */
127+ node1._iNext = node2Next;
128+ node1._iPrev = node2;
129+ node2._iNext = node1;
130+ node2._iPrev = node1Prev;
131+
132+ // Notify the head and tail
133+ if (node1Prev)
134+ {
135+ node1Prev._iNext = node2;
136+ }
137+
138+ if (node2Next)
139+ {
140+ node2Next._iPrev = node1;
141+ }
142+ // }
106143 }
107144 else if (node2._iNext == node1)
108145 {
@@ -197,20 +234,23 @@ function changeOrder (node1, node2) {
197234 }
198235 }
199236
200- scanList(s );
237+ scanList(game.world._stage );
201238
202239 }
203240
204241 function scanList (sprite) {
205242
243+ console.log('Node | Next | Prev | First | Last');
244+ console.log('------|--------|--------|---------|---------');
245+
206246 var displayObject = sprite;
207247
208248 var testObject = displayObject.last._iNext;
209249 displayObject = displayObject.first;
210250
211251 do
212252 {
213- var name = displayObject.name || 'nuffin ';
253+ var name = displayObject.name || '~ ';
214254 var nameNext = '-';
215255 var namePrev = '-';
216256 var nameFirst = '-';
@@ -256,7 +296,7 @@ function scanList (sprite) {
256296 nameLast = '-';
257297 }
258298
259- console.log('node:', name, 'next:', nameNext, 'prev:', namePrev, 'first:', nameFirst, 'last:', nameLast);
299+ console.log(name + ' | ' + nameNext + ' | ' + namePrev + ' | ' + nameFirst + ' | ' + nameLast);
260300
261301 displayObject = displayObject._iNext;
262302
0 commit comments