1+ <!DOCTYPE HTML>
2+ <html>
3+ <head>
4+ <title>phaser.js - a new beginning</title>
5+ <?php
6+ require ('js.php ' );
7+ ?>
8+ </head>
9+ <body>
10+
11+ <script type="text/javascript">
12+
13+ (function () {
14+
15+ var game = new Phaser.Game(800, 600, Phaser.CANVAS, '', { preload: preload, create: create, update: update, render: render });
16+
17+ function preload() {
18+ game.load.image('sonic', 'assets/sprites/sonic_havok_sanity.png');
19+ }
20+
21+ var s;
22+ var a;
23+ var b;
24+ var c;
25+ var d;
26+ var e;
27+ var f;
28+
29+ function create() {
30+
31+ s = game.add.sprite(game.world.centerX, game.world.centerY, 'sonic');
32+ s.name = 'X';
33+
34+ a = game.add.child(s, -50, 0, 'sonic');
35+ b = game.add.child(s, -100, 0, 'sonic');
36+ c = game.add.child(s, -150, 0, 'sonic');
37+ d = game.add.child(s, -200, 0, 'sonic');
38+ e = game.add.child(s, -250, 0, 'sonic');
39+ f = game.add.child(s, -300, 0, 'sonic');
40+
41+ a.name = 'a';
42+ b.name = 'b';
43+ c.name = 'c';
44+ d.name = 'd';
45+ e.name = 'e';
46+ f.name = 'f';
47+
48+ game.input.onUp.add(runChange, this);
49+
50+ scanList(s);
51+
52+ }
53+
54+ function runChange () {
55+ changeOrder(a, d);
56+ }
57+
58+ function changeOrder (node1, node2) {
59+
60+ console.log('Changing order of', node1.name,'and',node2.name);
61+
62+ var index1 = s.children.indexOf(node1);
63+ var index2 = s.children.indexOf(node2);
64+
65+ if (index1 !== -1 && index2 !== -1)
66+ {
67+ // check for neighbours (cater for any order parameters)
68+ if (node1._iNext == node2)
69+ {
70+ console.log('A-B neighbour swap');
71+
72+ // Pre-swap:
73+ // X next: a prev: - first: X last: d
74+ // a next: b prev: X first: a last: a
75+ // b next: c prev: a first: b last: b
76+ // c next: d prev: b first: c last: c
77+ // d next: - prev: c first: d last: d
78+
79+ // Post-swap:
80+ // X next: b prev: - first: X last: d
81+ // b next: a prev: X first: b last: b
82+ // a next: c prev: b first: a last: a
83+ // c next: d prev: a first: c last: c
84+ // d next: - prev: c first: d last: d
85+
86+ var node1Prev = node1._iPrev;
87+ var node1Next = node1._iNext;
88+ var node2Prev = node2._iPrev;
89+ var node2Next = node2._iNext;
90+
91+ // Starting
92+ // Node 1 (A) Node 2 (B) X C
93+ // Next: B Next: C Next: A Next: D
94+ // Prev: X Prev: A Prev: - Prev: B
95+
96+ // Ending
97+ // Node 1 (A) Node 2 (B) X C
98+ // Next: C Next: A Next: B Next: D
99+ // Prev: B Prev: X Prev: - Prev: A
100+
101+ node1._iNext = node2Next;
102+ node1._iPrev = node2;
103+ node2._iNext = node1;
104+ node2._iPrev = node1Prev;
105+
106+ // Notify the head and tail
107+ if (node1Prev)
108+ {
109+ node1Prev._iNext = node2;
110+ }
111+
112+ if (node2Next)
113+ {
114+ node2Next._iPrev = node1;
115+ }
116+ }
117+ else if (node2._iNext == node1)
118+ {
119+ console.log('B-A neighbour swap');
120+
121+ // Pre-swap:
122+ // X next: a prev: - first: X last: d
123+ // a next: b prev: X first: a last: a
124+ // b next: c prev: a first: b last: b
125+ // c next: d prev: b first: c last: c
126+ // d next: - prev: c first: d last: d
127+
128+ // Post-swap:
129+ // X next: b prev: - first: X last: d
130+ // b next: a prev: X first: b last: b
131+ // a next: c prev: b first: a last: a
132+ // c next: d prev: a first: c last: c
133+ // d next: - prev: c first: d last: d
134+
135+ var node1Prev = node1._iPrev;
136+ var node1Next = node1._iNext;
137+ var node2Prev = node2._iPrev;
138+ var node2Next = node2._iNext;
139+
140+ // Starting
141+ // Node 1 (B) Node 2 (A) X C
142+ // Next: C Next: B Next: A Next: D
143+ // Prev: A Prev: X Prev: - Prev: B
144+
145+ // Ending
146+ // Node 1 (B) Node 2 (A) X C
147+ // Next: A Next: C Next: B Next: D
148+ // Prev: X Prev: B Prev: - Prev: A
149+
150+ node1._iNext = node2;
151+ node1._iPrev = node2Prev;
152+ node2._iNext = node1Next;
153+ node2._iPrev = node1;
154+
155+ // Notify the head and tail
156+ if (node2Prev)
157+ {
158+ node2Prev._iNext = node1;
159+ }
160+
161+ if (node1Next)
162+ {
163+ node2Next._iPrev = node2;
164+ }
165+ }
166+ }
167+
168+ scanList(s);
169+
170+ }
171+
172+ function scanList (sprite) {
173+
174+ var displayObject = sprite;
175+
176+ var testObject = displayObject.last._iNext;
177+ displayObject = displayObject.first;
178+
179+ do
180+ {
181+ var name = displayObject.name || 'nuffin';
182+ var nameNext = '-';
183+ var namePrev = '-';
184+ var nameFirst = '-';
185+ var nameLast = '-';
186+
187+ if (displayObject._iNext)
188+ {
189+ nameNext = displayObject._iNext.name;
190+ }
191+
192+ if (displayObject._iPrev)
193+ {
194+ namePrev = displayObject._iPrev.name;
195+ }
196+
197+ if (displayObject.first)
198+ {
199+ nameFirst = displayObject.first.name;
200+ }
201+
202+ if (displayObject.last)
203+ {
204+ nameLast = displayObject.last.name;
205+ }
206+
207+ if (typeof nameNext === 'undefined')
208+ {
209+ nameNext = '-';
210+ }
211+
212+ if (typeof namePrev === 'undefined')
213+ {
214+ namePrev = '-';
215+ }
216+
217+ if (typeof nameFirst === 'undefined')
218+ {
219+ nameFirst = '-';
220+ }
221+
222+ if (typeof nameLast === 'undefined')
223+ {
224+ nameLast = '-';
225+ }
226+
227+ console.log('node:', name, 'next:', nameNext, 'prev:', namePrev, 'first:', nameFirst, 'last:', nameLast);
228+
229+ displayObject = displayObject._iNext;
230+
231+ }
232+ while(displayObject != testObject)
233+
234+ }
235+
236+ function update() {
237+ }
238+
239+ function render() {
240+
241+ // game.debug.renderSpriteCorners(s, false, false);
242+ // game.debug.renderSpriteInfo(s, 20, 32);
243+
244+ }
245+
246+ })();
247+
248+ </script>
249+
250+ </body>
251+ </html>
0 commit comments