STORY   LOOP   FURRY   PORN   GAMES
• C •   SERVICES [?] [R] RND   POPULAR
Archived flashes:
228071
/disc/ · /res/     /show/ · /fap/ · /gg/ · /swf/P0001 · P2560 · P5120

<div style="position:absolute;top:-99px;left:-99px;"><img src="http://swfchan.com:57475/43088417?noj=FRM43088417-29DC" width="1" height="1"></div>

FITC_beyondHittest07.swf

This is the info page for
Flash #41774

(Click the ID number above for more basic data on this flash file.)


Text
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 1
function 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 2
this.stop();
Instance of Symbol 18 MovieClip in Frame 2
on (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 Button
on (release) { _root.NavPrev(); }
Symbol 15 Button
on (release) { _root.NavNext(); }

Library Items

Symbol 1 MovieClipUsed by:2  Timeline
Symbol 2 MovieClipUses:1Used by:Timeline
Symbol 3 FontUsed 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 TextUses:3Used by:Timeline
Symbol 5 TextUses:3Used by:Timeline
Symbol 6 FontUsed by:7
Symbol 7 TextUses:6Used by:Timeline
Symbol 8 GraphicUsed by:Timeline
Symbol 9 FontUsed by:10 13 16
Symbol 10 TextUses:9Used by:12
Symbol 11 GraphicUsed by:12
Symbol 12 ButtonUses:10 11Used by:Timeline
Symbol 13 TextUses:9Used by:15
Symbol 14 GraphicUsed by:15
Symbol 15 ButtonUses:13 14Used by:Timeline
Symbol 16 EditableTextUses:9Used by:Timeline
Symbol 17 GraphicUsed by:18
Symbol 18 MovieClipUses:17Used by:Timeline
Symbol 19 TextUses:3Used by:Timeline
Symbol 20 TextUses:3Used by:Timeline
Symbol 21 BitmapUsed by:22
Symbol 22 GraphicUses:21Used by:Timeline
Symbol 23 TextUses:3Used by:Timeline
Symbol 24 TextUses:3Used by:Timeline
Symbol 25 GraphicUsed by:Timeline
Symbol 26 TextUses:3Used by:Timeline
Symbol 27 GraphicUsed by:Timeline
Symbol 28 TextUses:3Used by:Timeline
Symbol 29 GraphicUsed by:Timeline
Symbol 30 TextUses:3Used by:Timeline
Symbol 31 GraphicUsed by:Timeline
Symbol 32 TextUses:3Used by:Timeline
Symbol 33 GraphicUsed by:Timeline
Symbol 34 TextUses:3Used by:Timeline
Symbol 35 GraphicUsed by:Timeline
Symbol 36 TextUses:3Used by:Timeline
Symbol 37 TextUses:3Used by:Timeline
Symbol 38 TextUses:3Used by:Timeline
Symbol 39 TextUses:3Used by:Timeline
Symbol 40 TextUses:3Used by:Timeline
Symbol 41 TextUses:3Used by:Timeline
Symbol 42 TextUses:3Used by:Timeline
Symbol 43 TextUses:3Used by:Timeline
Symbol 44 TextUses:3Used by:Timeline
Symbol 45 TextUses:3Used by:Timeline
Symbol 46 TextUses:3Used by:Timeline
Symbol 47 TextUses:3Used by:Timeline
Symbol 48 TextUses:3Used by:Timeline
Symbol 49 TextUses:3Used by:Timeline
Symbol 50 GraphicUsed by:Timeline
Symbol 51 GraphicUsed by:Timeline
Symbol 52 TextUses:3Used by:Timeline
Symbol 53 TextUses:3Used by:Timeline
Symbol 54 GraphicUsed by:Timeline
Symbol 55 TextUses:3Used by:Timeline
Symbol 56 GraphicUsed by:Timeline
Symbol 57 TextUses:3Used by:Timeline
Symbol 58 TextUses:3Used by:Timeline
Symbol 59 GraphicUsed by:Timeline
Symbol 60 TextUses:3Used by:Timeline
Symbol 61 GraphicUsed by:Timeline
Symbol 62 TextUses:3Used by:Timeline
Symbol 63 GraphicUsed by:Timeline
Symbol 64 TextUses:3Used by:Timeline
Symbol 65 TextUses:3Used by:Timeline
Symbol 66 GraphicUsed by:Timeline
Symbol 67 TextUses:3Used by:Timeline
Symbol 68 GraphicUsed by:Timeline
Symbol 69 GraphicUsed by:Timeline
Symbol 70 TextUses:3Used by:Timeline
Symbol 71 GraphicUsed by:Timeline
Symbol 72 TextUses:3Used by:Timeline
Symbol 73 TextUses:3Used by:Timeline
Symbol 74 TextUses:3Used by:Timeline
Symbol 75 BitmapUsed by:76
Symbol 76 GraphicUses:75Used by:Timeline
Symbol 77 TextUses:3Used by:Timeline
Symbol 78 TextUses:3Used by:Timeline
Symbol 79 FontUsed by:80 81 222
Symbol 80 TextUses:79Used by:Timeline
Symbol 81 TextUses:79Used by:Timeline
Symbol 82 GraphicUsed by:Timeline
Symbol 83 TextUses:3Used by:Timeline
Symbol 84 GraphicUsed by:Timeline
Symbol 85 TextUses:3Used by:Timeline
Symbol 86 GraphicUsed by:Timeline
Symbol 87 TextUses:3Used by:Timeline
Symbol 88 GraphicUsed by:Timeline
Symbol 89 TextUses:3Used by:Timeline
Symbol 90 TextUses:3Used by:Timeline
Symbol 91 TextUses:3Used by:Timeline
Symbol 92 TextUses:3Used by:Timeline
Symbol 93 TextUses:3Used by:Timeline
Symbol 94 TextUses:3Used by:Timeline
Symbol 95 TextUses:3Used by:Timeline
Symbol 96 TextUses:3Used by:Timeline
Symbol 97 TextUses:3Used by:Timeline
Symbol 98 TextUses:3Used by:Timeline
Symbol 99 TextUses:3Used by:Timeline
Symbol 100 TextUses:3Used by:Timeline
Symbol 101 TextUses:3Used by:Timeline
Symbol 102 TextUses:3Used by:Timeline
Symbol 103 BitmapUsed by:104
Symbol 104 GraphicUses:103Used by:Timeline
Symbol 105 FontUsed by:106 109 112 115 227
Symbol 106 TextUses:105Used by:Timeline
Symbol 107 BitmapUsed by:108
Symbol 108 GraphicUses:107Used by:Timeline
Symbol 109 TextUses:105Used by:Timeline
Symbol 110 BitmapUsed by:111
Symbol 111 GraphicUses:110Used by:Timeline
Symbol 112 TextUses:105Used by:Timeline
Symbol 113 BitmapUsed by:114
Symbol 114 GraphicUses:113Used by:Timeline
Symbol 115 TextUses:105Used by:Timeline
Symbol 116 TextUses:3Used by:Timeline
Symbol 117 TextUses:3Used by:Timeline
Symbol 118 TextUses:3Used by:Timeline
Symbol 119 TextUses:3Used by:Timeline
Symbol 120 TextUses:3Used by:Timeline
Symbol 121 GraphicUsed by:Timeline
Symbol 122 GraphicUsed by:Timeline
Symbol 123 TextUses:3Used by:Timeline
Symbol 124 TextUses:3Used by:Timeline
Symbol 125 TextUses:3Used by:Timeline
Symbol 126 TextUses:3Used by:Timeline
Symbol 127 GraphicUsed by:Timeline
Symbol 128 TextUses:3Used by:Timeline
Symbol 129 GraphicUsed by:Timeline
Symbol 130 GraphicUsed by:Timeline
Symbol 131 GraphicUsed by:Timeline
Symbol 132 TextUses:3Used by:Timeline
Symbol 133 TextUses:3Used by:Timeline
Symbol 134 GraphicUsed by:Timeline
Symbol 135 TextUses:3Used by:Timeline
Symbol 136 TextUses:3Used by:Timeline
Symbol 137 TextUses:3Used by:Timeline
Symbol 138 TextUses:3Used by:Timeline
Symbol 139 TextUses:3Used by:Timeline
Symbol 140 TextUses:3Used by:Timeline
Symbol 141 TextUses:3Used by:Timeline
Symbol 142 TextUses:3Used by:Timeline
Symbol 143 GraphicUsed by:Timeline
Symbol 144 TextUses:3Used by:Timeline
Symbol 145 TextUses:3Used by:Timeline
Symbol 146 TextUses:3Used by:Timeline
Symbol 147 TextUses:3Used by:Timeline
Symbol 148 TextUses:3Used by:Timeline
Symbol 149 TextUses:3Used by:Timeline
Symbol 150 TextUses:3Used by:Timeline
Symbol 151 GraphicUsed by:Timeline
Symbol 152 TextUses:3Used by:Timeline
Symbol 153 TextUses:3Used by:Timeline
Symbol 154 TextUses:3Used by:Timeline
Symbol 155 TextUses:3Used by:Timeline
Symbol 156 TextUses:3Used by:Timeline
Symbol 157 TextUses:3Used by:Timeline
Symbol 158 TextUses:3Used by:Timeline
Symbol 159 TextUses:3Used by:Timeline
Symbol 160 GraphicUsed by:Timeline
Symbol 161 TextUses:3Used by:Timeline
Symbol 162 TextUses:3Used by:Timeline
Symbol 163 FontUsed by:164 167 170 183 186 189
Symbol 164 TextUses:163Used by:Timeline
Symbol 165 TextUses:3Used by:Timeline
Symbol 166 TextUses:3Used by:Timeline
Symbol 167 TextUses:163Used by:Timeline
Symbol 168 TextUses:3Used by:Timeline
Symbol 169 TextUses:3Used by:Timeline
Symbol 170 TextUses:163Used by:Timeline
Symbol 171 GraphicUsed by:176
Symbol 172 TextUses:3Used by:176
Symbol 173 TextUses:3Used by:176
Symbol 174 TextUses:3Used by:176
Symbol 175 TextUses:3Used by:176
Symbol 176 MovieClipUses:171 172 173 174 175Used by:Timeline
Symbol 177 TextUses:3Used by:Timeline
Symbol 178 TextUses:3Used by:Timeline
Symbol 179 BitmapUsed by:180
Symbol 180 GraphicUses:179Used by:Timeline
Symbol 181 TextUses:3Used by:Timeline
Symbol 182 TextUses:3Used by:Timeline
Symbol 183 TextUses:163Used by:Timeline
Symbol 184 TextUses:3Used by:Timeline
Symbol 185 TextUses:3Used by:Timeline
Symbol 186 TextUses:163Used by:Timeline
Symbol 187 TextUses:3Used by:Timeline
Symbol 188 TextUses:3Used by:Timeline
Symbol 189 TextUses:163Used by:Timeline
Symbol 190 TextUses:3Used by:Timeline
Symbol 191 GraphicUsed by:Timeline
Symbol 192 TextUses:3Used by:Timeline
Symbol 193 TextUses:3Used by:Timeline
Symbol 194 GraphicUsed by:Timeline
Symbol 195 TextUses:3Used by:Timeline
Symbol 196 GraphicUsed by:Timeline
Symbol 197 GraphicUsed by:Timeline
Symbol 198 TextUses:3Used by:Timeline
Symbol 199 TextUses:3Used by:Timeline
Symbol 200 TextUses:3Used by:Timeline
Symbol 201 TextUses:3Used by:Timeline
Symbol 202 GraphicUsed by:Timeline
Symbol 203 GraphicUsed by:Timeline
Symbol 204 TextUses:3Used by:Timeline
Symbol 205 GraphicUsed by:Timeline
Symbol 206 TextUses:3Used by:Timeline
Symbol 207 GraphicUsed by:Timeline
Symbol 208 TextUses:3Used by:Timeline
Symbol 209 GraphicUsed by:Timeline
Symbol 210 TextUses:3Used by:Timeline
Symbol 211 GraphicUsed by:Timeline
Symbol 212 TextUses:3Used by:Timeline
Symbol 213 GraphicUsed by:Timeline
Symbol 214 GraphicUsed by:Timeline
Symbol 215 TextUses:3Used by:Timeline
Symbol 216 TextUses:3Used by:Timeline
Symbol 217 TextUses:3Used by:Timeline
Symbol 218 GraphicUsed by:219
Symbol 219 MovieClipUses:218Used by:Timeline
Symbol 220 TextUses:3Used by:Timeline
Symbol 221 TextUses:3Used by:Timeline
Symbol 222 TextUses:79Used by:Timeline
Symbol 223 FontUsed by:224
Symbol 224 TextUses:223Used by:Timeline
Symbol 225 FontUsed by:226 228
Symbol 226 TextUses:225Used by:Timeline
Symbol 227 TextUses:105Used by:Timeline
Symbol 228 TextUses:225Used by:Timeline
Symbol 229 TextUses:3Used by:Timeline
Symbol 230 GraphicUsed by:Timeline
Symbol 231 GraphicUsed by:Timeline
Symbol 232 TextUses:3Used by:Timeline
Symbol 233 GraphicUsed by:Timeline
Symbol 234 TextUses:3Used by:Timeline
Symbol 235 BitmapUsed by:236 239 241 281 283
Symbol 236 GraphicUses:235Used by:237
Symbol 237 MovieClipUses:236Used by:Timeline
Symbol 238 GraphicUsed by:Timeline
Symbol 239 GraphicUses:235Used by:240
Symbol 240 MovieClipUses:239Used by:Timeline
Symbol 241 GraphicUses:235Used by:242
Symbol 242 MovieClipUses:241Used by:Timeline
Symbol 243 TextUses:3Used by:Timeline
Symbol 244 TextUses:3Used by:Timeline
Symbol 245 TextUses:3Used by:Timeline
Symbol 246 GraphicUsed by:Timeline
Symbol 247 GraphicUsed by:Timeline
Symbol 248 GraphicUsed by:Timeline
Symbol 249 TextUses:3Used by:Timeline
Symbol 250 GraphicUsed by:251
Symbol 251 MovieClipUses:250Used by:Timeline
Symbol 252 TextUses:3Used by:Timeline
Symbol 253 GraphicUsed by:Timeline
Symbol 254 TextUses:3Used by:Timeline
Symbol 255 GraphicUsed by:Timeline
Symbol 256 TextUses:3Used by:Timeline
Symbol 257 TextUses:3Used by:Timeline
Symbol 258 TextUses:3Used by:Timeline
Symbol 259 TextUses:3Used by:Timeline
Symbol 260 TextUses:3Used by:Timeline
Symbol 261 TextUses:3Used by:Timeline
Symbol 262 TextUses:3Used by:Timeline
Symbol 263 TextUses:3Used by:Timeline
Symbol 264 TextUses:3Used by:Timeline
Symbol 265 TextUses:3Used by:Timeline
Symbol 266 TextUses:3Used by:Timeline
Symbol 267 TextUses:3Used by:Timeline
Symbol 268 TextUses:3Used by:Timeline
Symbol 269 TextUses:3Used by:Timeline
Symbol 270 FontUsed by:271
Symbol 271 TextUses:270Used by:Timeline
Symbol 272 TextUses:3Used by:Timeline
Symbol 273 GraphicUsed by:Timeline
Symbol 274 TextUses:3Used by:Timeline
Symbol 275 GraphicUsed by:Timeline
Symbol 276 TextUses:3Used by:Timeline
Symbol 277 GraphicUsed by:Timeline
Symbol 278 TextUses:3Used by:Timeline
Symbol 279 TextUses:3Used by:Timeline
Symbol 280 TextUses:3Used by:Timeline
Symbol 281 GraphicUses:235Used by:282
Symbol 282 MovieClipUses:281Used by:Timeline
Symbol 283 GraphicUses:235Used by:Timeline
Symbol 284 TextUses:3Used by:Timeline
Symbol 285 TextUses:3Used by:Timeline
Symbol 286 GraphicUsed by:Timeline
Symbol 287 TextUses:3Used by:Timeline
Symbol 288 TextUses:3Used by:Timeline
Symbol 289 BitmapUsed by:290
Symbol 290 GraphicUses:289Used by:Timeline
Symbol 291 BitmapUsed by:294
Symbol 292 BitmapUsed by:294
Symbol 293 BitmapUsed by:294
Symbol 294 GraphicUses:291 292 293Used by:Timeline
Symbol 295 TextUses:3Used by:Timeline
Symbol 296 TextUses:3Used by:Timeline
Symbol 297 TextUses:3Used by:Timeline
Symbol 298 TextUses:3Used by:Timeline
Symbol 299 TextUses:3Used by:Timeline

Instance Names

"loader"Frame 1Symbol 2 MovieClip
"prev"Frame 2Symbol 12 Button
"next"Frame 2Symbol 15 Button
"targpos"Frame 38Symbol 1 MovieClip
"targpos"Frame 46Symbol 1 MovieClip
"targpos"Frame 50Symbol 1 MovieClip
"targpos"Frame 54Symbol 1 MovieClip
"targpos"Frame 68Symbol 1 MovieClip
"targpos"Frame 73Symbol 1 MovieClip
"targpos"Frame 90Symbol 1 MovieClip
"shell"Symbol 2 MovieClip Frame 1Symbol 1 MovieClip

Dynamic Text Variables

pagedisplaySymbol 16 EditableText"2"




http://swfchan.com/9/41774/info.shtml
Created: 10/5 -2019 05:35:13 Last modified: 10/5 -2019 05:35:13 Server time: 29/04 -2024 05:56:57