STORY LOOP FURRY PORN GAMES C SERVICES [?] [R] RND POPULAR | Archived flashes: 228071 |
/disc/ · /res/ — /show/ · /fap/ · /gg/ · /swf/ | P0001 · P2560 · P5120 |
This is the info page for Flash #41774 |
Beyond hitTest(): proper collision detection in actionscript |
METANET SOFTWARE |
One of the most important features of any action game is collision; sadly it is usually one of the weakest points in most flash games. One reason for this is that many programmers rely upon the built- in hitTest() method, which is extremely limited: it works only with axis-aligned rectangles or points, and returns only a boolean result. While a simple yes/no result is sufficient in some cases, many applications (like racing games) really do require extra information about collisions when they occur, in order to respond to the collision in a meaningful way. Often this extra information is implicitly found by testing multiple positions for collision, in order to infer information about the collision; from several yes/no results, a more detailed model of what’s happening can be built. However, this awkward (ab)use of the built-in collision functions undermines the entire process – if you need to hitTest() multiple times (at different points) for each collision, the built-in methods cease to outperform “real” collision detection methods. It’s time to think about doing it the right way. This presentation will introduce some useful tools for solving the collision problem quickly and accurately, including use of the seperating-axis-theorem to test two shapes, as well as higher-level data structures and approaches which will reduce the number of tests needed. |
PREV |
NEXT |
2 |
download this presentation at: http://www.harveycartel.org/metanet/tutorials/fitc05.zip |
** WARNING! ** may contain programmer art |
"The Curse of Sylvaniah" (by Strille and LuxRegina) |
Collision Detection can be a complex problem, however it is also a well-researched problem. |
Game Programming |
Collision Detection |
AI |
Physics |
Graphics |
Game Rules |
Games which benefit from complex collision detection: |
-Racing |
-Pool, Pinball |
-Basketball |
-Platform/Run-and-Jump |
-Pool |
-Basketball |
even better: New Genres!! |
Collision Detection == Gameplay Options |
hitTest() |
-only returns a boolean result |
-only works with axis-aligned rectangles |
Collision responses using hitTest(): |
BOOM! |
Destroy |
Reset |
Reverse |
Collision responses we'd like to support: |
Friction / Bounce |
Resolving Penetration |
Orient-to-Surface |
Collision Shapes Supported by hitTest(): |
Collision Shapes we'd like to support: |
maybe I'm not using hitTest() "properly"? |
..these sort of "solutions" are slow and buggy. |
hitTest(): Cutting-edge Technology |
..from the arcades of the 80s |
Physics: "the new graphics" |
..it doesn't have to be complicated or slow, even in actionscript. |
position += velocity; |
newpos = oldpos + vel; |
physics |
Trig |
Vectors |
SNES |
graphical power |
processing power |
<4MHz |
64k |
16bit integers |
>2GHz |
512MB |
64bit floats |
Flash |
vs. |
Game Developer's Conference 2005: |
-gameplay is becomming more important than graphics |
Collision Detection and Physics are powerful tools for creating unique gameplay. |
Gish by Chronic Logic http://www.chroniclogic.com |
Break Quest by Nurium Games www.nurium.com |
Soldat by Michal Marcinkowski www.soldat.pl |
Katamari Damacy by Keita Takahashi / Namco http://www.namco.com/games /katamari_damacy/ |
Beyond hitTest() part 0: Collision Response |
-friction |
-bounce |
-sliding |
-etc. |
Penetration Vector |
Penetration Amount |
Penetration Direction |
= Penetration Vector |
* Penetration Amount |
Collision Direction |
Collision Velocity |
Velocity Perpendicular to Surface |
Velocity Parallel to Surface |
Friction and Bounce: |
Beyond hitTest() part 1: Narrow-Phase Collision Detection (a.k.a object-vs-object) |
Collision Detection: |
-are these two shapes colliding? |
-if so, how are they colliding? (i.e what is the penetration vector?) |
-for all possibly colliding pairs of shapes: |
broad phase |
narrow phase |
the Method of Separating Axes |
axis == direction |
the Method of Seperating Axes |
this method is based on the Separating Axis Theorem (SAT) |
the SAT applies to all convex shapes: |
Separating Axis Theorem: part 1 |
If two convex polygons don't overlap, then there exists a direction along which they are separated. |
(the converse is also true: if there is no separating direction, the polygons must be overlapping) |
Separating Axis Theorem: part 2 |
If a separating axis exists, then it must be perpendicular to an edge of one of the polygons. |
Method of Separating Axes: |
determine all potentially separating axes for(each potentially separating axis): if(axis separates objects): return false (objects aren't colliding) else, continue if(no separating axis found): return true (objects are colliding) |
"Vector Math" |
Vectors |
point0 = (x0,y0) point1 = (x1,y1) vector from p1 to p0 = (x0-x1, y0-y1) |
vx = x0 - x1; vy = y0 - y1; |
Unit Vectors a.k.a Direction Vectors |
vector0 = (vx,vy) len = length of vector0 direction vector parallel to vector0 = (vx/len, vy/len) |
len = Math.sqrt(vx*vx + vy*vy); dx = vx/len; dy = vy/len; |
Normal Vectors |
vector0 = (vx,vy) lefthand normal = (vy,-vx) righthand normal = (-vy,vx) lefthand normal = -righthand normal |
rx = -vy; ry = vx; lx = vy; ly = -vx; |
(6,-1) |
(1,6) |
(-1,-6) |
(0,0) |
Normal Vectors |
-these are the potentially separating axes. |
Dot Product |
-let A be the vector from p1 to p2 -let B be the vector from p1 to p0 -the dotproduct of A and B is a measure of the relative directions of two vectors |
ax = x2 - x1; //ax,ay is ay = y2 - y1; //p1->p2 bx = x0 - x1; //bx,by is by = y0 - y1; //p1->p0 AdotB = ax*bx + ay*by; //AdotB is the dotprod of //p1->p2 and p1->p0 |
the dotproduct of A and B is: -max when A and B are pointing in the same direction -min when A and B are pointing in opposite directions -0 when A and B are perpendicular |
-if vector A is unit-legth and vector B isn't, the dotproduct of A and B is equivalent ot the length of B when measured or viewed along the axis defined by A -this is how we "project" vectors onto an axis |
ax = x2 - x1; ay = y2 - y1; len = Math.sqrt(ax*ax + ay*ay); ax /= len; //ax,ay is now ay /= len; //unit-length bx = x0 - x1; by = y0 - y1; AdotB = ax*bx + ay*by; |
Vector Projection |
(vector A is unit-legth and vector B isn't) -multiply A by the dotproduct of A and B, and the result is a vector we call "B projected onto (the axis defined by) A" |
ax = x2 - x1; ay = y2 - y1; len = Math.sqrt(ax*ax + ay*ay); ax /= len; ay /= len; bx = x0 - x1; by = y0 - y1; AdotB = ax*bx + ay*by; px = ax*AdotB; //px,py is B py = ay*AdotB; //projected onto A |
-now we can project vectors onto an arbitrary axis -this is how we'll project collision shapes onto the potentially separating axes |
determine all potentially saperating axes for(each potentially separating axis): if(axis separates objects): return false (objects aren't colliding) else, continue if(no separating axis found): return true (objects are colliding) |
this is the step where we project the shapes onto an axis and look at the results (i.e are objects separated along that axis, or are they overlapping along that axis?) |
Box vs. Box: 4 axes to test |
wait a second.... |
-this seems a bit complicated.. |
-don't we still end up with only a boolean result?! |
the Method of Separating Axes is simply an extension of everyone's favorite "circle-vs-circle" collision method |
Circle-vs-Circle: a) calculate the distance between circle centers (green line) b) calculate the sum of the radii of the circles (blue lines) if the distance between the circles is greater than the sum of their radii, then the circles are separated (i.e don't overlap). if the distance between them is less than the sum of their radii, then the circles overlap. |
delta = distance between circles rad = sum of radii diff = rad - delta if(diff < 0): no collision if(0 <= diff): collision ..AND, we know how to calculate the penetration vector: penetration amount = diff penetration direction is parallel to delta |
our method is the same as circle-circle, except that: |
-we test more than a single axis -we can't simply look at the "raw" value of radius and distance measurements; we have to project them onto an axis and look at the measurements of the projected values |
If we do find a collision (i.e if the shapes overlap along all axes), we use the axis of least overlap as the penetration direction, and the amount of overlap along that axis as the penetration amount. |
we need to know: |
which directions are perpendicular to our objects how to project each object onto an arbitrary axis |
Projecting Shapes onto an Axis: Oriented Box |
oriented box: -position px,py -halfwidths xw,yw -"facing" vector dx,dy (defines the x-axis of the box) |
find the size of the box when projected onto the axis ax,ay: |
function ProjectBox(box,ax,ay) { ix = box.xw * box.dx; //dx,dy: the unit vector which points along the x-axis iy = box.xw * box.dy; //of the box; ix,iy is the x halfwidth vector jx = box.yw * -box.dy; //-dy,dx: the unit vector which points along the y-axis jy = box.yw * box.dx; //of the box; jx,jy is the x halfwidth vector dpi = ix*ax + iy*ay; //project both halfwidth vectors onto the axis dpj = jx*ax + jy*ay; bsize = Math.abs(dpi) + Math.abs(dpj); return bsize; //bsize is the "radius" of the box when projected onto the axis } |
deltax = boxA.px - boxB.px; //deltax,deltay is the vector between the two box centers deltay = boxA.py - boxB.py; axis_x = boxA.dx; //test boxA's x-axis (boxA.dx, boxA.dy) axis_y = boxA.dy; asize = boxA.xw; //the size of A when projected onto its own x-axis is its x-width bsize = ProjectBox(boxB, axis_x, axis_y); //project B onto the axis dsize = Math.abs(deltax*axis_x + deltay*axis_y); penAx = (asize + bsize) - dsize; if(0 < penAx) { //boxes overlap along axis; check next axis axis_x = boxB.dx; //test boxB's x-axis (boxB.dx, boxB.dy) axis_y = boxB.dy; asize = ProjectBox(boxA, axis_x, axis_y);//project B onto the axis bsize = boxB.xw; dsize = Math.abs(deltax*axis_x + deltay*axis_y); penBx = (asize + bsize) - dsize; if(0 < penBx) { //boxes overlap along axis; check next axis <...test the other 2 axes here...> } else { //boxes don't overlap } } else { //boxes don't overlap } |
What wasn't mentioned: |
-tracking the axis of minimum overlap -which way (along the axis of minimum overlap) we should project |
Please visit our online tutorials for source code and a more in-depth look at the process. |
..what about circles? |
..what about shapes that aren't convex? |
(original diagram by Gino Van Den Bergen) |
Optimisations? preprocess, preprocess, preprocess |
Questions about SAT/MSA? |
Beyond hitTest() part 2: Broad-Phase Collision Detection (a.k.a spatial databases) |
Bounding Boxes |
Better Solutions: Uniform Grid |
Better Solutions: Quadtree |
Any spatial database must support the following operations: |
Neighborhood Query: quickly determine which objects are near a given position |
Update: updating the database to reflect changes to object positions |
Grids |
vs. |
Trees |
fast query/update |
slow query/update |
needs lots of memory |
needs less memory |
Grids: |
2D: 200x100 tiles @ 256bytes = 5MB 3D: 200x100x100 tiles @ 256bytes = 500MB |
We can afford the extra memory, but not the extra processor time. |
Finding the cell which contains point px,py: |
grid_column = Math.floor(px / cell_width); grid_row = Math.floor(py / cell_height); |
Colliding objects vs. each other |
Regular Grid |
Loose Grid |
-faster query (less cells to look in) -slower update (more cells to update) |
-slower query (more cells to look in) -faster update (less cells to update) |
Colliding objects vs. "the world" |
Tiles: |
Linesegs: |
Raycasting |
-simpler than you might think -useful for modelling bullets or line-of-sight/vision tests |
-there are many algorithms for marching through a grid along a ray; we use this one |
-this is the core of the algorithm: only 10 lines of code |
THE END.. Questions? |
In case you we sleeping: -collision detection is a useful tool for making fun games -the Method of Separating Axes is a useful tool for narrow-phase collision detection -a uniform grid is a useful tool for broad-phase collision detection |
Source code (and tutorials) for almost everything mentioned is available free from our website: http://www.harveycartel.org/metanet/ |
ActionScript [AS1/AS2]
Frame 1function NavPrev() { var _local1 = _root; _local1.UnLoadMC(); var _local2 = Math.max(2, _local1._currentframe - 1); _local1.pagedisplay = _local2; _local1.gotoAndStop(_local2); } function NavNext() { var _local1 = _root; _local1.UnLoadMC(); var _local2 = Math.min(_local1.GVAR_LASTFRAME, _local1._currentframe + 1); _local1.pagedisplay = _local2; _local1.gotoAndStop(_local2); } function NavInput() { var _local1 = _root; var _local3 = Number(_local1.pagedisplay); var _local2 = Math.max(2, Math.min(_local1.GVAR_LASTFRAME, _local3)); if (_local2 != _local1._currentframe) { _local1.UnLoadMC(); _local1.pagedisplay = _local2; _local1.gotoAndStop(_local2); } } function UnLoadMC() { _root.loader.shell.unloadMovie(); _root.loader._visible = false; } function LoadMC(filename, targmc, scale) { var _local1 = _root; _local1.UnLoadMC(); _local1.loader._visible = true; var _local2 = "media/" + filename; _local1.loader.shell.loadMovie(_local2); _local1.loader._x = targmc._x; _local1.loader._y = targmc._y; var _local3 = 100 * scale; _local1.loader._xscale = (_local1.loader._yscale = _local3); } function HackyKeyObj() { var _local1 = this; var _local3 = _root; _local1.wasDown = false; Key.addListener(_local1); _local1.onKeyDown = function () { var _local2 = _root; var _local1 = Key.getCode(); if (!this.wasDown) { if (_local1 == 37) { _local2.NavPrev(); } else if (_local1 == 39) { _local2.NavNext(); } else if (_local1 == 13) { _local2.NavInput(); } this.wasDown = true; } }; _local1.onKeyUp = function () { this.wasDown = false; }; } GVAR_LASTFRAME = 97; tempKeys = new HackyKeyObj();Frame 2this.stop();Instance of Symbol 18 MovieClip in Frame 2on (release) { _root.NavInput(); }Frame 38_root.LoadMC("N_tutorial_diagrams05_frictionbounce.swf", _root.targpos, 1.7);Frame 46_root.LoadMC("N_tutorial_diagrams05_boxbox_projection.swf", _root.targpos, 1.3);Frame 47_root.LoadMC("N_tutorial_diagrams05_boxbox_projection.swf", _root.targpos, 1.3);Frame 48_root.LoadMC("N_tutorial_diagrams05_boxbox_projection.swf", _root.targpos, 1);Frame 50_root.LoadMC("N_tutorial_diagrams05_vector.swf", _root.targpos, 1);Frame 51_root.LoadMC("N_tutorial_diagrams05_unitvector.swf", _root.targpos, 1);Frame 52_root.LoadMC("N_tutorial_diagrams05_vectornormals.swf", _root.targpos, 1);Frame 54_root.LoadMC("N_tutorial_diagrams05_rawdotprod.swf", _root.targpos, 1);Frame 55_root.LoadMC("N_tutorial_diagrams05_unitdotprod.swf", _root.targpos, 1);Frame 56_root.LoadMC("N_tutorial_diagrams05_projdotprod.swf", _root.targpos, 1);Frame 57_root.LoadMC("N_tutorial_diagrams05_vectorprojection.swf", _root.targpos, 1.5);Frame 68_root.LoadMC("N_tutorial_diagrams05_boxprojection.swf", _root.targpos, 1);Frame 69_root.LoadMC("N_tutorial_diagrams05_boxprojection.swf", _root.targpos, 1);Frame 73_root.LoadMC("N_tutorial_diagrams05_circlebox.swf", _root.targpos, 2);Frame 90_root.LoadMC("N_tutorial_diagrams05_boxcells.swf", _root.targpos, 1.5);Symbol 12 Buttonon (release) { _root.NavPrev(); }Symbol 15 Buttonon (release) { _root.NavNext(); }
Library Items
Symbol 1 MovieClip | Used by:2 Timeline | ||
Symbol 2 MovieClip | Uses:1 | Used by:Timeline | |
Symbol 3 Font | Used by:4 5 19 20 23 24 26 28 30 32 34 36 37 38 39 40 41 42 43 44 45 46 47 48 49 52 53 55 57 58 60 62 64 65 67 70 72 73 74 77 78 83 85 87 89 90 91 92 93 94 95 96 97 98 99 100 101 102 116 117 118 119 120 123 124 125 126 128 132 133 135 136 137 138 139 140 141 142 144 145 146 147 148 149 150 152 153 154 155 156 157 158 159 161 162 165 166 168 169 172 173 174 175 177 178 181 182 184 185 187 188 190 192 193 195 198 199 200 201 204 206 208 210 212 215 216 217 220 221 229 232 234 243 244 245 249 252 254 256 257 258 259 260 261 262 263 264 265 266 267 268 269 272 274 276 278 279 280 284 285 287 288 295 296 297 298 299 | ||
Symbol 4 Text | Uses:3 | Used by:Timeline | |
Symbol 5 Text | Uses:3 | Used by:Timeline | |
Symbol 6 Font | Used by:7 | ||
Symbol 7 Text | Uses:6 | Used by:Timeline | |
Symbol 8 Graphic | Used by:Timeline | ||
Symbol 9 Font | Used by:10 13 16 | ||
Symbol 10 Text | Uses:9 | Used by:12 | |
Symbol 11 Graphic | Used by:12 | ||
Symbol 12 Button | Uses:10 11 | Used by:Timeline | |
Symbol 13 Text | Uses:9 | Used by:15 | |
Symbol 14 Graphic | Used by:15 | ||
Symbol 15 Button | Uses:13 14 | Used by:Timeline | |
Symbol 16 EditableText | Uses:9 | Used by:Timeline | |
Symbol 17 Graphic | Used by:18 | ||
Symbol 18 MovieClip | Uses:17 | Used by:Timeline | |
Symbol 19 Text | Uses:3 | Used by:Timeline | |
Symbol 20 Text | Uses:3 | Used by:Timeline | |
Symbol 21 Bitmap | Used by:22 | ||
Symbol 22 Graphic | Uses:21 | Used by:Timeline | |
Symbol 23 Text | Uses:3 | Used by:Timeline | |
Symbol 24 Text | Uses:3 | Used by:Timeline | |
Symbol 25 Graphic | Used by:Timeline | ||
Symbol 26 Text | Uses:3 | Used by:Timeline | |
Symbol 27 Graphic | Used by:Timeline | ||
Symbol 28 Text | Uses:3 | Used by:Timeline | |
Symbol 29 Graphic | Used by:Timeline | ||
Symbol 30 Text | Uses:3 | Used by:Timeline | |
Symbol 31 Graphic | Used by:Timeline | ||
Symbol 32 Text | Uses:3 | Used by:Timeline | |
Symbol 33 Graphic | Used by:Timeline | ||
Symbol 34 Text | Uses:3 | Used by:Timeline | |
Symbol 35 Graphic | Used by:Timeline | ||
Symbol 36 Text | Uses:3 | Used by:Timeline | |
Symbol 37 Text | Uses:3 | Used by:Timeline | |
Symbol 38 Text | Uses:3 | Used by:Timeline | |
Symbol 39 Text | Uses:3 | Used by:Timeline | |
Symbol 40 Text | Uses:3 | Used by:Timeline | |
Symbol 41 Text | Uses:3 | Used by:Timeline | |
Symbol 42 Text | Uses:3 | Used by:Timeline | |
Symbol 43 Text | Uses:3 | Used by:Timeline | |
Symbol 44 Text | Uses:3 | Used by:Timeline | |
Symbol 45 Text | Uses:3 | Used by:Timeline | |
Symbol 46 Text | Uses:3 | Used by:Timeline | |
Symbol 47 Text | Uses:3 | Used by:Timeline | |
Symbol 48 Text | Uses:3 | Used by:Timeline | |
Symbol 49 Text | Uses:3 | Used by:Timeline | |
Symbol 50 Graphic | Used by:Timeline | ||
Symbol 51 Graphic | Used by:Timeline | ||
Symbol 52 Text | Uses:3 | Used by:Timeline | |
Symbol 53 Text | Uses:3 | Used by:Timeline | |
Symbol 54 Graphic | Used by:Timeline | ||
Symbol 55 Text | Uses:3 | Used by:Timeline | |
Symbol 56 Graphic | Used by:Timeline | ||
Symbol 57 Text | Uses:3 | Used by:Timeline | |
Symbol 58 Text | Uses:3 | Used by:Timeline | |
Symbol 59 Graphic | Used by:Timeline | ||
Symbol 60 Text | Uses:3 | Used by:Timeline | |
Symbol 61 Graphic | Used by:Timeline | ||
Symbol 62 Text | Uses:3 | Used by:Timeline | |
Symbol 63 Graphic | Used by:Timeline | ||
Symbol 64 Text | Uses:3 | Used by:Timeline | |
Symbol 65 Text | Uses:3 | Used by:Timeline | |
Symbol 66 Graphic | Used by:Timeline | ||
Symbol 67 Text | Uses:3 | Used by:Timeline | |
Symbol 68 Graphic | Used by:Timeline | ||
Symbol 69 Graphic | Used by:Timeline | ||
Symbol 70 Text | Uses:3 | Used by:Timeline | |
Symbol 71 Graphic | Used by:Timeline | ||
Symbol 72 Text | Uses:3 | Used by:Timeline | |
Symbol 73 Text | Uses:3 | Used by:Timeline | |
Symbol 74 Text | Uses:3 | Used by:Timeline | |
Symbol 75 Bitmap | Used by:76 | ||
Symbol 76 Graphic | Uses:75 | Used by:Timeline | |
Symbol 77 Text | Uses:3 | Used by:Timeline | |
Symbol 78 Text | Uses:3 | Used by:Timeline | |
Symbol 79 Font | Used by:80 81 222 | ||
Symbol 80 Text | Uses:79 | Used by:Timeline | |
Symbol 81 Text | Uses:79 | Used by:Timeline | |
Symbol 82 Graphic | Used by:Timeline | ||
Symbol 83 Text | Uses:3 | Used by:Timeline | |
Symbol 84 Graphic | Used by:Timeline | ||
Symbol 85 Text | Uses:3 | Used by:Timeline | |
Symbol 86 Graphic | Used by:Timeline | ||
Symbol 87 Text | Uses:3 | Used by:Timeline | |
Symbol 88 Graphic | Used by:Timeline | ||
Symbol 89 Text | Uses:3 | Used by:Timeline | |
Symbol 90 Text | Uses:3 | Used by:Timeline | |
Symbol 91 Text | Uses:3 | Used by:Timeline | |
Symbol 92 Text | Uses:3 | Used by:Timeline | |
Symbol 93 Text | Uses:3 | Used by:Timeline | |
Symbol 94 Text | Uses:3 | Used by:Timeline | |
Symbol 95 Text | Uses:3 | Used by:Timeline | |
Symbol 96 Text | Uses:3 | Used by:Timeline | |
Symbol 97 Text | Uses:3 | Used by:Timeline | |
Symbol 98 Text | Uses:3 | Used by:Timeline | |
Symbol 99 Text | Uses:3 | Used by:Timeline | |
Symbol 100 Text | Uses:3 | Used by:Timeline | |
Symbol 101 Text | Uses:3 | Used by:Timeline | |
Symbol 102 Text | Uses:3 | Used by:Timeline | |
Symbol 103 Bitmap | Used by:104 | ||
Symbol 104 Graphic | Uses:103 | Used by:Timeline | |
Symbol 105 Font | Used by:106 109 112 115 227 | ||
Symbol 106 Text | Uses:105 | Used by:Timeline | |
Symbol 107 Bitmap | Used by:108 | ||
Symbol 108 Graphic | Uses:107 | Used by:Timeline | |
Symbol 109 Text | Uses:105 | Used by:Timeline | |
Symbol 110 Bitmap | Used by:111 | ||
Symbol 111 Graphic | Uses:110 | Used by:Timeline | |
Symbol 112 Text | Uses:105 | Used by:Timeline | |
Symbol 113 Bitmap | Used by:114 | ||
Symbol 114 Graphic | Uses:113 | Used by:Timeline | |
Symbol 115 Text | Uses:105 | Used by:Timeline | |
Symbol 116 Text | Uses:3 | Used by:Timeline | |
Symbol 117 Text | Uses:3 | Used by:Timeline | |
Symbol 118 Text | Uses:3 | Used by:Timeline | |
Symbol 119 Text | Uses:3 | Used by:Timeline | |
Symbol 120 Text | Uses:3 | Used by:Timeline | |
Symbol 121 Graphic | Used by:Timeline | ||
Symbol 122 Graphic | Used by:Timeline | ||
Symbol 123 Text | Uses:3 | Used by:Timeline | |
Symbol 124 Text | Uses:3 | Used by:Timeline | |
Symbol 125 Text | Uses:3 | Used by:Timeline | |
Symbol 126 Text | Uses:3 | Used by:Timeline | |
Symbol 127 Graphic | Used by:Timeline | ||
Symbol 128 Text | Uses:3 | Used by:Timeline | |
Symbol 129 Graphic | Used by:Timeline | ||
Symbol 130 Graphic | Used by:Timeline | ||
Symbol 131 Graphic | Used by:Timeline | ||
Symbol 132 Text | Uses:3 | Used by:Timeline | |
Symbol 133 Text | Uses:3 | Used by:Timeline | |
Symbol 134 Graphic | Used by:Timeline | ||
Symbol 135 Text | Uses:3 | Used by:Timeline | |
Symbol 136 Text | Uses:3 | Used by:Timeline | |
Symbol 137 Text | Uses:3 | Used by:Timeline | |
Symbol 138 Text | Uses:3 | Used by:Timeline | |
Symbol 139 Text | Uses:3 | Used by:Timeline | |
Symbol 140 Text | Uses:3 | Used by:Timeline | |
Symbol 141 Text | Uses:3 | Used by:Timeline | |
Symbol 142 Text | Uses:3 | Used by:Timeline | |
Symbol 143 Graphic | Used by:Timeline | ||
Symbol 144 Text | Uses:3 | Used by:Timeline | |
Symbol 145 Text | Uses:3 | Used by:Timeline | |
Symbol 146 Text | Uses:3 | Used by:Timeline | |
Symbol 147 Text | Uses:3 | Used by:Timeline | |
Symbol 148 Text | Uses:3 | Used by:Timeline | |
Symbol 149 Text | Uses:3 | Used by:Timeline | |
Symbol 150 Text | Uses:3 | Used by:Timeline | |
Symbol 151 Graphic | Used by:Timeline | ||
Symbol 152 Text | Uses:3 | Used by:Timeline | |
Symbol 153 Text | Uses:3 | Used by:Timeline | |
Symbol 154 Text | Uses:3 | Used by:Timeline | |
Symbol 155 Text | Uses:3 | Used by:Timeline | |
Symbol 156 Text | Uses:3 | Used by:Timeline | |
Symbol 157 Text | Uses:3 | Used by:Timeline | |
Symbol 158 Text | Uses:3 | Used by:Timeline | |
Symbol 159 Text | Uses:3 | Used by:Timeline | |
Symbol 160 Graphic | Used by:Timeline | ||
Symbol 161 Text | Uses:3 | Used by:Timeline | |
Symbol 162 Text | Uses:3 | Used by:Timeline | |
Symbol 163 Font | Used by:164 167 170 183 186 189 | ||
Symbol 164 Text | Uses:163 | Used by:Timeline | |
Symbol 165 Text | Uses:3 | Used by:Timeline | |
Symbol 166 Text | Uses:3 | Used by:Timeline | |
Symbol 167 Text | Uses:163 | Used by:Timeline | |
Symbol 168 Text | Uses:3 | Used by:Timeline | |
Symbol 169 Text | Uses:3 | Used by:Timeline | |
Symbol 170 Text | Uses:163 | Used by:Timeline | |
Symbol 171 Graphic | Used by:176 | ||
Symbol 172 Text | Uses:3 | Used by:176 | |
Symbol 173 Text | Uses:3 | Used by:176 | |
Symbol 174 Text | Uses:3 | Used by:176 | |
Symbol 175 Text | Uses:3 | Used by:176 | |
Symbol 176 MovieClip | Uses:171 172 173 174 175 | Used by:Timeline | |
Symbol 177 Text | Uses:3 | Used by:Timeline | |
Symbol 178 Text | Uses:3 | Used by:Timeline | |
Symbol 179 Bitmap | Used by:180 | ||
Symbol 180 Graphic | Uses:179 | Used by:Timeline | |
Symbol 181 Text | Uses:3 | Used by:Timeline | |
Symbol 182 Text | Uses:3 | Used by:Timeline | |
Symbol 183 Text | Uses:163 | Used by:Timeline | |
Symbol 184 Text | Uses:3 | Used by:Timeline | |
Symbol 185 Text | Uses:3 | Used by:Timeline | |
Symbol 186 Text | Uses:163 | Used by:Timeline | |
Symbol 187 Text | Uses:3 | Used by:Timeline | |
Symbol 188 Text | Uses:3 | Used by:Timeline | |
Symbol 189 Text | Uses:163 | Used by:Timeline | |
Symbol 190 Text | Uses:3 | Used by:Timeline | |
Symbol 191 Graphic | Used by:Timeline | ||
Symbol 192 Text | Uses:3 | Used by:Timeline | |
Symbol 193 Text | Uses:3 | Used by:Timeline | |
Symbol 194 Graphic | Used by:Timeline | ||
Symbol 195 Text | Uses:3 | Used by:Timeline | |
Symbol 196 Graphic | Used by:Timeline | ||
Symbol 197 Graphic | Used by:Timeline | ||
Symbol 198 Text | Uses:3 | Used by:Timeline | |
Symbol 199 Text | Uses:3 | Used by:Timeline | |
Symbol 200 Text | Uses:3 | Used by:Timeline | |
Symbol 201 Text | Uses:3 | Used by:Timeline | |
Symbol 202 Graphic | Used by:Timeline | ||
Symbol 203 Graphic | Used by:Timeline | ||
Symbol 204 Text | Uses:3 | Used by:Timeline | |
Symbol 205 Graphic | Used by:Timeline | ||
Symbol 206 Text | Uses:3 | Used by:Timeline | |
Symbol 207 Graphic | Used by:Timeline | ||
Symbol 208 Text | Uses:3 | Used by:Timeline | |
Symbol 209 Graphic | Used by:Timeline | ||
Symbol 210 Text | Uses:3 | Used by:Timeline | |
Symbol 211 Graphic | Used by:Timeline | ||
Symbol 212 Text | Uses:3 | Used by:Timeline | |
Symbol 213 Graphic | Used by:Timeline | ||
Symbol 214 Graphic | Used by:Timeline | ||
Symbol 215 Text | Uses:3 | Used by:Timeline | |
Symbol 216 Text | Uses:3 | Used by:Timeline | |
Symbol 217 Text | Uses:3 | Used by:Timeline | |
Symbol 218 Graphic | Used by:219 | ||
Symbol 219 MovieClip | Uses:218 | Used by:Timeline | |
Symbol 220 Text | Uses:3 | Used by:Timeline | |
Symbol 221 Text | Uses:3 | Used by:Timeline | |
Symbol 222 Text | Uses:79 | Used by:Timeline | |
Symbol 223 Font | Used by:224 | ||
Symbol 224 Text | Uses:223 | Used by:Timeline | |
Symbol 225 Font | Used by:226 228 | ||
Symbol 226 Text | Uses:225 | Used by:Timeline | |
Symbol 227 Text | Uses:105 | Used by:Timeline | |
Symbol 228 Text | Uses:225 | Used by:Timeline | |
Symbol 229 Text | Uses:3 | Used by:Timeline | |
Symbol 230 Graphic | Used by:Timeline | ||
Symbol 231 Graphic | Used by:Timeline | ||
Symbol 232 Text | Uses:3 | Used by:Timeline | |
Symbol 233 Graphic | Used by:Timeline | ||
Symbol 234 Text | Uses:3 | Used by:Timeline | |
Symbol 235 Bitmap | Used by:236 239 241 281 283 | ||
Symbol 236 Graphic | Uses:235 | Used by:237 | |
Symbol 237 MovieClip | Uses:236 | Used by:Timeline | |
Symbol 238 Graphic | Used by:Timeline | ||
Symbol 239 Graphic | Uses:235 | Used by:240 | |
Symbol 240 MovieClip | Uses:239 | Used by:Timeline | |
Symbol 241 Graphic | Uses:235 | Used by:242 | |
Symbol 242 MovieClip | Uses:241 | Used by:Timeline | |
Symbol 243 Text | Uses:3 | Used by:Timeline | |
Symbol 244 Text | Uses:3 | Used by:Timeline | |
Symbol 245 Text | Uses:3 | Used by:Timeline | |
Symbol 246 Graphic | Used by:Timeline | ||
Symbol 247 Graphic | Used by:Timeline | ||
Symbol 248 Graphic | Used by:Timeline | ||
Symbol 249 Text | Uses:3 | Used by:Timeline | |
Symbol 250 Graphic | Used by:251 | ||
Symbol 251 MovieClip | Uses:250 | Used by:Timeline | |
Symbol 252 Text | Uses:3 | Used by:Timeline | |
Symbol 253 Graphic | Used by:Timeline | ||
Symbol 254 Text | Uses:3 | Used by:Timeline | |
Symbol 255 Graphic | Used by:Timeline | ||
Symbol 256 Text | Uses:3 | Used by:Timeline | |
Symbol 257 Text | Uses:3 | Used by:Timeline | |
Symbol 258 Text | Uses:3 | Used by:Timeline | |
Symbol 259 Text | Uses:3 | Used by:Timeline | |
Symbol 260 Text | Uses:3 | Used by:Timeline | |
Symbol 261 Text | Uses:3 | Used by:Timeline | |
Symbol 262 Text | Uses:3 | Used by:Timeline | |
Symbol 263 Text | Uses:3 | Used by:Timeline | |
Symbol 264 Text | Uses:3 | Used by:Timeline | |
Symbol 265 Text | Uses:3 | Used by:Timeline | |
Symbol 266 Text | Uses:3 | Used by:Timeline | |
Symbol 267 Text | Uses:3 | Used by:Timeline | |
Symbol 268 Text | Uses:3 | Used by:Timeline | |
Symbol 269 Text | Uses:3 | Used by:Timeline | |
Symbol 270 Font | Used by:271 | ||
Symbol 271 Text | Uses:270 | Used by:Timeline | |
Symbol 272 Text | Uses:3 | Used by:Timeline | |
Symbol 273 Graphic | Used by:Timeline | ||
Symbol 274 Text | Uses:3 | Used by:Timeline | |
Symbol 275 Graphic | Used by:Timeline | ||
Symbol 276 Text | Uses:3 | Used by:Timeline | |
Symbol 277 Graphic | Used by:Timeline | ||
Symbol 278 Text | Uses:3 | Used by:Timeline | |
Symbol 279 Text | Uses:3 | Used by:Timeline | |
Symbol 280 Text | Uses:3 | Used by:Timeline | |
Symbol 281 Graphic | Uses:235 | Used by:282 | |
Symbol 282 MovieClip | Uses:281 | Used by:Timeline | |
Symbol 283 Graphic | Uses:235 | Used by:Timeline | |
Symbol 284 Text | Uses:3 | Used by:Timeline | |
Symbol 285 Text | Uses:3 | Used by:Timeline | |
Symbol 286 Graphic | Used by:Timeline | ||
Symbol 287 Text | Uses:3 | Used by:Timeline | |
Symbol 288 Text | Uses:3 | Used by:Timeline | |
Symbol 289 Bitmap | Used by:290 | ||
Symbol 290 Graphic | Uses:289 | Used by:Timeline | |
Symbol 291 Bitmap | Used by:294 | ||
Symbol 292 Bitmap | Used by:294 | ||
Symbol 293 Bitmap | Used by:294 | ||
Symbol 294 Graphic | Uses:291 292 293 | Used by:Timeline | |
Symbol 295 Text | Uses:3 | Used by:Timeline | |
Symbol 296 Text | Uses:3 | Used by:Timeline | |
Symbol 297 Text | Uses:3 | Used by:Timeline | |
Symbol 298 Text | Uses:3 | Used by:Timeline | |
Symbol 299 Text | Uses:3 | Used by:Timeline |
Instance Names
"loader" | Frame 1 | Symbol 2 MovieClip |
"prev" | Frame 2 | Symbol 12 Button |
"next" | Frame 2 | Symbol 15 Button |
"targpos" | Frame 38 | Symbol 1 MovieClip |
"targpos" | Frame 46 | Symbol 1 MovieClip |
"targpos" | Frame 50 | Symbol 1 MovieClip |
"targpos" | Frame 54 | Symbol 1 MovieClip |
"targpos" | Frame 68 | Symbol 1 MovieClip |
"targpos" | Frame 73 | Symbol 1 MovieClip |
"targpos" | Frame 90 | Symbol 1 MovieClip |
"shell" | Symbol 2 MovieClip Frame 1 | Symbol 1 MovieClip |
Dynamic Text Variables
pagedisplay | Symbol 16 EditableText | "2" |
|