STORY LOOP FURRY PORN GAMES C SERVICES [?] [R] RND POPULAR | Archived flashes: 229494 |
/disc/ · /res/ — /show/ · /fap/ · /gg/ · /swf/ | P0001 · P2575 · P5149 |
This is the info page for Flash #36808 |
ActionScript |
Arrays! ClipEvents! Hierarchies! for and while! if and else! PWNAGE! AND MORE! |
OVER 100 frames of pure programming pwnage! |
Learn the skils to make games, movies, and websites in Flash. |
The beginner section includes: Movieclip controls symbols buttons ClipEvents hierarchies objects User interaction |
The advanced section includes: Arrays Debuging Listeners Prototypes Code Centralization Functions |
Actionscript Tutorial |
Beginner Tutorial |
This is for those with only minimal programming experience in Flash. It teaches Movieclip control, diffrent types of symbols, use of buttons,use of ClipEvents, hierarchies, and works with basic and common objects. This features a concept section, a hall of code samples, and a small quiz. |
Beginner Tutorial |
Advanced Tutorial |
This section is for those with experience in actionscript, and understand fully the use of objects and ClipEvents. This covers arrays, advanced use of actionscript to manipulate colors, for and while, code centralization, listeners, handlers, the prototype command, and more. |
Advanced Tutorial |
Conceptual ActionScript |
Conceptual ActionScript |
This helps to explain how actionscript actually works, and leads you to create your own programs. |
Conceptual ActionScript |
Applied ActionScript |
Applied ActionScript |
Applied ActionScript is a series of code samples with descriptions on use that can be copied and pasted into a frame or MovieClip |
Applied ActionScript is a series of code samples with brief descriptions on use that can be copied and pasted into a frame or MovieClip |
Applied ActionScript |
Main Menu |
Advanced Section |
Quiz Section |
Quiz Section |
This is a brief quiz that will test how well you learned the beginner tutorial (or how ready you are for the advanced tutorial) |
Quiz Section |
For Beginners |
For Beginners |
This gives you the absolute basics that you must know before treading into Conceptual ActionScript. If you are a self admitted newb, check this out first. :) |
Music |
Navigation |
1 |
2 |
3 |
Main Menu |
Beginner Tutorial |
Advanced Tutorial |
Hide |
No |
No |
Menu |
Hierarchies |
Flash actionscript works in what is called a hierarchy. The main objects on the hierarchy are movieclips, functions which you have defined, and properties of objects. |
Player is an instance name given to a MovieClip |
_x is a property that belongs to MovieClips. |
Use the numbers above to skip around |
Use (mouse over) the menu to change music and navigate between scenes |
1 |
Hierarchies |
2 |
ClipEvents |
3 |
If |
4 |
hitTest |
5 |
Symbols |
6 |
Artificial Intelligence |
This is a hierarchy shown graphically |
_root |
guy |
(instance name) |
_x |
This is refering to the MovieClip named guy and to the x coordinate of that MovieClip. _root is an object, and guy is an object in _root. _x is a property of guy, meaning that it effects guy in some way. |
This is the same piece of code, but written as it would be in the actions panel of Flash. |
_root.guy._x |
The _root should always precede a variable or MovieClip because _root contains them. If an MC name precedes a property, than that property modifies the MC. |
Where am I supposed to put the codes I'll use? |
Put any code you are using into the actions panel. This is at the bottom of the screen and accessible with F9. |
Properties are pretty diverse, and you can even create some of your own. Here are some of the easiest properties to understand and use: |
_x - the x coordinate of an object, the x value goes up as you move right and down as you move left. _y - the y coordinate of an object, the y value goes up as you move down and down as you move up. (kind of a bad choice by Macromedia) _alpha - this tells flash how much light should be let through an object, or how transparent an object is. An alpha of 100 is totally opaque, 0 is totally transparent |
The properties you just saw are variables, meaning they are dynamic and change over time. The value of a variable can be set or acquired. Often an action of the user can change the value of a variable. |
Some objects are constants and will never change. Stage.width is a good example, this will always be equal to the width of the stage. |
A variable can be set to a constant or another variable |
guy._x += speed |
+= or -= is used to subtract or add to the variable |
The line before might say: |
speed = 5; |
Most lines should end with a semicolon. |
Although knowledge about objects is important, these statements always occur within a certain context |
The next couple of slides cover the general syntax of flash, as this will allow you to understand what will be taught later |
= |
sets a variable |
for example: |
health = 100; |
== |
sets up a comparison |
if (health == 0) { gotoAndPlay(2); } |
If statements will be covered later |
> or < are always a comparison, it cannot be used to set the value (they are greater then and less then, respectively) |
some objects are true/false. One major example is _visible. That object cannot be assigned a numerical value, rather it can only be true or false |
guy._visible = true; |
ClipEvents |
ClipEvents are put inside the action frame of a MovieClip. Inside a movieClip, you may refer to the MovieClip as this, rather than its instance name. |
this._x = 5; |
is the same as |
_root.guy._x = 5; |
(Assuming that the first statement is inside a movieclip called guy) |
ClipEvents are put on a MovieClip, and if put into a frame, the game/movie will not work. |
ClipEvents are very useful, and although some programmers frown upon them, I find them quite useful. |
One major type of ClipEvent is enterFrame |
As a rule of thumb most objects in flash have the first letter lower case and the second letter capitalized. |
The enterFrame ClipEvent runs the code every time a frame passes. This may sound complicated but if you hit the property menu with nothing selected, you can set your framerate and thus how often a enterFrame runs. Example: |
onClipEvent (enterFrame) { this._x += 5; } |
Now is the time to put together everything you've learned to make sense of this. On every frame, the x of this will be 5 more, moving the object to the right |
Note that more than one thing can be put inside the brackets of the ClipEvent |
onClipEvent(enterFrame) { this._x +=5; this._y +=2; } |
this bracket ends the ClipEvent |
this bracket begins the ClipEvent |
onClipEvent(enterFrame) { this._x +=5; this._y +=2; } |
everything within those two brackets will be read by Flash as part of the ClipEvent |
onClipEvent(load) { this._x = Stage.height/2; this._y = Stage.width/2; } |
The code inside the brackets after the load ClipEvent will play only ONCE: the first time that you see that movieClip while testing the movie. So think of this as setting whats happening initially. |
The load ClipEvent and the enterFrame ClipEvent make a good combination. Take this example: |
onClipEvent(load) { this._x = 0; } onClipEvent(enterFrame) { this._x +=5; } |
there are other ClipEvents, such as mouseDown, which will run the code in the brackets when the user clicks on the MovieClip. |
The if statement |
The if statement really pulls Flash together. With the if statement, you have a condition and what will occur if the condition is true. |
if (this._x < 100) { this._x += 5; } |
You will see this code in action on the next page. |
This code will only work if placed on an onEnterFrame ClipEvent in the MovieClip, because it needs to be constantly checked and updated. |
The if statement is very useful. As you saw before, you can make the object move right until its x is greater than a certain constant, then the condition is false, and it stops. |
onClipEvent(enterFrame) { if (this._x< 10) { this._x += 5; } } |
An if statement begins with and ends with a bracket. |
One very useful property is _xmouse and _ymouse |
onClipEvent(enterFrame) { this._x = _root._xmouse; this._y = _root._ymouse; } |
this tells you that this MovieClip will have the same location as the mouse |
That was an example of the aforementioned code. Also, if statements can be embedded inside ClipEvents |
onClipEvent(enterFrame) { if (Key.isDown(Key.UP)) { this._y -= 5; } } |
Indentation isn't always neccessary but it does make things neat |
Brackets are needed to end the if statement and the ClipEvent |
Press the up key to test it out |
Knowing that the key codes for right is RIGHT, up is UP, left is LEFT, and down is DOWN, we can draw the following code |
onClipEvent(enterFrame) { if (Key.isDown(Key.UP)) { this._y -= 5; } if (Key.isDown(Key.DOWN)) { this._y += 5; } if (Key.isDown(Key.LEFT)) { this._x -= 5; } if (Key.isDown(Key.RIGHT)) { this._x += 5; } } |
Test it out again, this time with all 4 arrow-keys! |
Often, it is better to do movement saying that this._x += vx and that this._y += vy and saying that if the down key is pressed, then vy goes up. Then you'd include that in every frame, vx is multiplied by friction which would usually be around .97 this will make your movement smoother and more gradual. |
This is one good way of adding gravity for a 2D platformer |
onClipEvent(load) { gravity = 2; } onClipEvent(enterFrame) { vy += gravity; } |
Make sure that your "ground" (or whatever stops the object from falling forever has a hitest on it) |
The hitTest |
if (_root.guy.hitTest(_root.ground)) { vx *= -1; vy *= -1; //if you want it to bounce vx = 0; vy = 0; //use this if you want it stop } |
Generally this should be nested inside an enterFrame ClipEvent, because it needs to be checked constantly. |
Else - a tool for saving time |
Else is often used as an add on to an if statement. If the condition of the if statement isn't true, it will do what happens after else. |
if (this._x > 5) { this._x += vy; }else{ this._x -=vy; } |
MovieClip Controls |
These are pretty basic, but they're a neccisity. So I'll go over them. The main controls are: |
Play(); Stop(); gotoAndPlay(); gotoAndStop(); nextFrame(); nextScene(); prevScene(); prevFrame(); |
Note that if you create a MovieClip, it will have its own timeline, that can be referenced with gotoAndPlay or gotoAndStop |
_root.gotoAndStop(8); |
_root.guy.gotoAndStop(8) |
This will make your MC named guy gotoAndStop at frame 8. |
All of the other MovieClip controls work like that. |
_root.play(); _root.guy.play(); |
This tells the movie to play |
This tells guy to play |
_root.guy.nextFrame(); |
This tells the guy to go to the next frame |
nextScene is very useful, it will tell the movie to go to the next scene |
prevFrame and prevScene can also be used, these will go to the previous frame or scene |
User Interaction: Making dynamic MovieClip control |
onClipEvent(mouseDown) { _root.guy.play(); } |
If on guy's timeline there is a stop control on every frame, then this will tell guy to go to the next frame every time the user clicks down. To make the FPS really work, we will need to learn about buttons, which will happen later on. |
mouseDown will respond to any click, even if its not on the Movieclip |
Imagine if in every frame within guy's timeline he gets more band aids and scars with every frame that progresses |
Now think back to when we made an object that could follow the mouse |
If you're thinking what I'm thinking, we're in good position to make an FPS with crosshairs being told to follow the mouse and having an enemy that gets worse and worse as you click on him |
Within the enterFrame ClipEvent, we can say Mouse.hide(); to make the mouse invisible. Another tool for if you're making a full game is on the last frame of your MovieClip which is the enemy, say this.removeMovieClip; That will remove that movieclip, so he cannot be clicked and so that he doesn't take up hardware |
Like that? It could be the basis a very successful FPS. In the applied actionscript section, you will be able to see some of the codes I've used, although if you've been following this tutorial attentively you should be able to make it yourself. |
MovieClips, buttons, and graphics (collectively known as symbols) |
When you press F8, you'll notice that you can convert an object to a MovieClip, a button, or a graphic. Up until this point, this tutorial has only used MovieClips. The advatange of a MovieClip is that it can have ClipEvents, however there are certain commands which can only be applied to a button. |
Now before I get into the bulk of this section, its important to note that the with the FPS done before. What was done was inside the enemy movieclip, an invisible circle was created on top of the enemy. And this invisible circle was a button, and after this section, you'll be able to use buttons to make the FPS you saw before. |
on(press) { _root.enemy.nextFrame; } |
This code would go inside the button inside the Movieclip of the enemy from the FPS. |
The main use of buttons is to allow the user to click on an object to mainpulate the timeline. They also allow the user to click on an enemy in an FPS. (Although this isn't necessarily the best way to do this!) |
These are buttons |
The code on the bottom one is: on(press) { prevFrame(); } |
Buttons are most useful for doing things similar to the arrows on the right do. Buttons do not only use on(press). Some other commands are: |
on(release) |
on(rollover) |
this will make the button do whatever is said below when the mouse is released from the button |
This will make the button do whatever is said when the mouse is on top of the button. |
If you double click on a button, you will see that the button does have its own timeline like a MovieClip, however it is quite diffrent. |
The Button has four spaces for keyframes. |
The Up area on the button's timeline will show what the button looks like when the mouse is not clicking it, and is not over it. |
The Over area shows what the button will look like when the mouse is over top of the button. Often it is a good idea to put a subtle yellow box here as to let the viewer know when the mouse is over top of a button. |
The Down area shows what the button will look like when it is pressed. This space is more important if you use on(release) instead of on(press), because on(press) goes exactly when you press so you wont see the down graphic. |
The hit area is more complicated. Whatever is put here tells the button what the hit box is. The hitbox is the part of the button that responds when the mouse is over it, or when the mouse clicks it. |
Graphics |
Rarely, if ever, have I ever created a graphic symbol. However, if you are making a movie, they can be useful because they don't have their own timeline and cannot be scripted. Their advantage is that they can be reused without making the filesize bigger. Any symbol can have alpha, color, and brightness changed manually. All of these things can be adjusted with actionscript though. We have only covered alpha briefly, but the advanced tutorial will have more information on color. |
Variables |
Variables can easily be created and edited in Flash. Some variables are user defined, and some are built into flash (such as alpha) |
To test a variable, use the trace command. Within the enterFrame ClipEvent say trace(variable); It will return a value on every frame inside a pop up that only you can see only while you're testing the movie. It will tell you the value of that set variable. Trace is useful because it allows you to manually see what value your variables are. |
Another thing to do is to create a dynamic textbox and in the var option at the bottom type the name of the variable you want it to display. This should actually be in the final product to display something like health to the player. |
onClipEvent(load) { health = 100; } OnClipEvent(mouseDown) { health -= 5; } onClipEvent(enterFrame) { if (health == 0) { prevScene; } } |
This is an example of using a variable in Flash |
The previous scene is the main menu in this case. |
This code would be put in a MovieClip |
Some variables and objects are booleans, some are values that can be any number, and some are values that have a set limit |
booleans are either equal to true of false. It can be modified as. |
this._visible = true |
or as |
this._visible = !this._visible |
! inverts the value of a boolean |
Over time, your main MovieClip will become very complicated and crowded. One way to make this clutter easier to deal with is code centralization, which will be covered in the advanced tutorial. Another way is to add comments to codes. The code after // in that line of code will turn grey. That way you will know what is a comment. Flash doesn't look at the comments, and won't read them. |
This is a good example of proper use for a comment. |
onClipEvent(enterFrame) { this._x *= friction if(this._alpha == 10)//set to ten so I can test it out this._x += vx //velocity of x, defined earlier }//ends enterFrame ClipEvent |
This is pretty simple code, so you may not see the point, but when a code is 100+ lines long, comments become very valuable. |
The comments are in blue boxes and red font to make them more distinct. In the actions panel, the comments will be grey and there will be no blue boxs. |
Artificial Intelligence |
(for games) |
That title is a bit misleading, as the enemies I will teach you to make are not going to have a sophisticated rationale or a thought process. I prefer two style of AI, one is where the enemy runs away from the player, and one where it runs toward it. If its an FPS, I like to make the enemy "teleport" across the screen when the mouse is over him |
Right now I'm going to work around the idea that we're making an FPS. I'll use the script from the last FPS segment I showed you, but here, the enemy will respond to the player. |
if (_root._xmouse > this._x) { this._x -= 5; } |
Logically, if the mouse is to the right of the enemy, the enemy will move left (at least in this scenario). |
With what you've learned, I trust you can fill this in for the rest of the x and the y coordinate. I have a completed script for this in the applied actionscript section. If you're thinking what I'm thinking, you're probably thinking about using an else statement to make this code shorter. |
if (_root._xmouse > this._x) { this._x -= 5; }else{ this._x +=5; } |
as opposed to: |
if (_root._xmouse > this._x) { this._x -= 5; } if (_root._xmouse < this._x) { this._x +=5; } |
Using the else command can be alot less time consuming then using two if statements. |
That FPS used a button to tell the Movieclip to go to the next frame. |
And it the Movieclip was told to move away from the mouse |
It is important to note that that enemy contained a button, and a shape (the black ball). However, all parts of the movieclip will stay with the movieclip in the same position as it moves around. |
When you do any kind of motion, the lower your framerate is, the more lag you'll have. |
Another side note: |
The StopAllSounds object will stop playing any sounds. You might want to put this into a button. |
on(press) { stopAllSounds(); } |
on(press) { mysound.start(); } |
to create mysound, say mySound = new Sound(); |
When you first do motionscript, saying that this._x += 5; on a certain condition is fine. However, there is a system for doing this that is much, much better that you will want to use. |
onClipEvent(load) { vx = 5; vy = 5; friction = .97; } |
You want to start by establishing a variable of x coordinate velocity (vx) and y coordinate velocity (vy). If it is to be a platformer with simple physics, you may want to add gravity. |
onClipEvent(enterFrame) { vx *= friction vy *= friction this._x += vx; this._y += vy; if (Key.isDown(Key.RIGHT)) { vx += 5; } |
This code will be logically repeated for every direction. |
vx and vy are how much the object will move |
I am telling the MovieClip to move in a direction at a changing rate, that will be fastest when the right key is pressed, and because it is being mutliplied by friction (.97 in this case) in every frame, it will gradually grind to a halt. In your game, it would be wise to adjust friction and velocity and experiment so that you get motion that is very loose or very tight, depending on what you want. |
This is the ball with the motionscript used earlier in the movie |
The great thing about the ball you just used is that you can make friction lower to make the control tighter so it comes to faster stops, or make it higher to give it a looser feeling. |
That's the end of the conceptual section. You can continue to the applied section for code samples or check out more advanced concepts. |
Go back to concepts |
Go to Advanced Section |
Main Menu |
Applied Section |
Making advanced motion for a platformer |
onClipEvent (load) { vx = 0; vy = 0; friction = .80; gravity = 1; } onClipEvent (enterFrame) { vx *= friction; vy *= friction; vy += gravity; this._x += vx; this._y += vy; if (_root.guy.hitTest(_root.floor)){ gravity = 0; vy = 0; }else{ gravity = 1; } if (key.isDown(Key.RIGHT)) { vx += 2; _root.ground._x -= 10; } if (key.isDown(Key.LEFT)) { vx -= 2; _root.ground._x += 10; } if (key.isDown(Key.UP)) { vy -= 40; } } if (this._y == stage.height) { vy = 0; gravity = 0; } } |
Place this inside a movieclip called "guy". Create a large background that is long and call it "ground", this will move as the character does. You will have to manually set what area he can jump in, as now he can jump no matter where he is. |
Basic AI |
This code will cause the enemy to run towards the mouse. To make it runs away from the mouse, replace every < with a > and vice versa If the mouse is at the same area as the enemy, the enemy will randomly move to any location on the stage. If you don't want it to do the last thing I mentioned, remove the part the part with the hitest and one bracket after it. Thenumber at the top that comes after speed can be made higher to make it faster or lower to make it slower Put this code inside a Movie Clip. |
onClipEvent(load) { speed = 5; } onClipEvent(enterFrame) { if (_root._xmouse > this._x) { this._x -= speed; }else{ this._x += speed; } if (_root._ymouse > this._y) { this._y -= speed; }else{ this._y += speed; } if (this.hitTest(_root._xmouse,_root._ymouse,true)) { this._x = int(Math.random()*550); this._y = int(Math.random()*400); } } |
Creating a Custom Cursor |
Put this code in any movieclip. The movieclip the code is on will follow the mouse. It will also make the mouse invisible |
To make the mouse visible again: |
onClipEvent(enterFrame) { Mouse.show(); } |
onClipEvent (enterFrame) { this._x = _root._xmouse; this._y = _root._ymouse; Mouse.hide(); } |
Put this is custom cursor/crosshairs |
onClipEvent (enterFrame) { if (_root.mc1.hitTest(_root.mc2)) { vx *= -1; vy *= -1; } } |
Basic HitTest |
Put this script into any MovieClip. Replace mc1 and mc2 with the instance names of your movieclips. After the bracket, anything can be placed. Here this will make the variables vx and vy to be multiplied by negative 1. If a Movieclip you have has its x movement as vx and its y movement as vy, then this will cause the object to bounce off the object it hits. If it says vx =0 and vy = 0, it will cause the object to stop |
Random mass of balls |
To do this, create a Movieclip with an instance name of ball. When converting this to a movieclip,you must go into advanced options and select the box that says export for actionscript, and type in the indentifier "ball" Put the code to the right inside the frame where you want the ball to randomly generate. Note that this can be put in a frame on MovieClip's timeline. |
for(var i; i<100; i++) { var ball = attachMovie("ball", "ball" + i, i); ball._x = Math.random() * Stage.width; ball._y = Math.random() * Stage.height; ball._xscale = ball._yscale = Math.Random() * 100 + 50; } |
Play around with this effect, it gives you a lot of balls with almost no filesize and little strain on the CPU. This will take any object and give it a random size and location, the object doesn't need to be a ball, that just needs to be its identifier and instance name. |
MotionScript for something like a spaceship (where up is the same as down and there is no gravity) |
onClipEvent (enterFrame) { friction = .90; vx *= friction; vy *= friction this._x += vx; this._y += vy; if (vx < 1 and vx > -1) { vx = 0; } if (vy < 1 and vy > -1) { vy = 0; } if (Key.isDown(Key.LEFT)) { vx = -5; } if (Key.isDown(Key.RIGHT)) { vx = 5; } if (Key.isDown(Key.UP)) { vy = -5; } if (Key.isDown(Key.DOWN)) { vy = 5; } } |
Just put this inside the Movieclip that you want to be movable with the keys. |
Its time for a quiz to test and reinforce what you've hopefully learned. |
Go on to quiz |
The MovieClip guy is embedded in the MovieClip bob. Which of the following expressses guy's x position? |
_root.bob.guy._x |
guy.bob._x |
bob.guy._x |
_root.guy.bob._x |
Sorry, you selected the wrong answer |
This is the correct answer: |
_root is always the highest level for a hierarchy. Because guy is inside bob, he is above him in the hierarchy, and needs to be put there. The _x object comes after guy because it modifies guy. |
Which will make the movieclip move to the right 5 if heatlh is equal to zero. |
if (health == 0) { this._x += 5; } |
if (health = 0) { this._x += 5; } |
Wrong, = will set the variable, while == is comparing variables. |
Mistaking the two is a very common error, but not knowing the difference between = and == can really mess things up. |
Which allows tighter control for the MovieClip? |
onClipEvent (enterFrame) { friction = .80; vx *= friction; vy *= friction this._x += vx; this._y += vy; if (Key.isDown(Key.LEFT)) { vx = -5; } if (Key.isDown(Key.RIGHT)) { vx = 5; } if (Key.isDown(Key.UP)) { vy = -5; } if (Key.isDown(Key.DOWN)) { vy = 5; } } |
onClipEvent (enterFrame) { friction = .90; vx *= friction; vy *= friction this._x += vx; this._y += vy; if (Key.isDown(Key.LEFT)) { vx = -5; } if (Key.isDown(Key.RIGHT)) { vx = 5; } if (Key.isDown(Key.UP)) { vy = -5; } if (Key.isDown(Key.DOWN)) { vy = 5; } } |
This one allows for tighter control. The only diffrence bettween this and the other script is that in this one, friction is .10 lower. Because vx and vy are being multiplied by a lower friction number in every frame, the movieclip will lose its velocity faster, meaning that it will have tighter control. |
Which ClipEvent plays only once in a movie as opposed to in every theoretical frame? |
onClipEvent(load) |
onClipEvent(mouseDown) |
onClipEvent(unload) |
onClipEvent(enterFrame) |
The correct answer was the load clipEvent |
The enterFrame clipevent will do the actions in the brackets following in on every theoretical frame. (If the framerate is 12 fps, it will do the action 12 times a second). |
The load ClipEvent plays the actions in the brackets following it only once. This effectivly sets the initial conditions. |
The mouseDown clipevent will do the actions in the brackets following it whenever the mouse is clicked, irregardless of the mouse's location. |
_xscale is an object that controls the length of an object _yscale is an object that controls the height of an object |
Which will tell an object to be a perfect circle ( same length and height) with a random size. |
Math.Random() produces a random number bettween 0 and 1. |
onClipEvent(enterFrame) { this._xscale = Math.Random() * 100 + 50; this._yscale = this._xscale; } |
onClipEvent(enterFrame) { this._xscale._x = Math.Random() * 100 + 50; this._yscale._y = this._xscale._x; } |
This choice was correct. |
This choice was wrong because of the _x after _xscale and the same being done with y. _x and _y are objects that control location on the coordinate plane. _xscale and _yscale is a completly seperate object that controls the size of an object. |
Thats the end of the beginner section. I hope you obtained some knowledge from it. |
The process may be slightly different but just try to hunt down the Macromedia folder. |
First off... How do I get this whole Flash thingy running? |
Now hit OK. |
Yeah I already knew that. Now I've got it open, what do I do now? |
Okay. Now your tutorial is telling me all this code, but I dont know where to put it! |
All you have to do is look on the bottom of the screen and click on the words in the box. |
No no, I meant, it told me to put code in a movieclip I. How do you do that? |
Begin by clicking on the MovieClip(or whatever you want to put the code in). After that, press F9 or find the actions panel at the bottom of the screen. Here you will open up an area where you can put text. This is your actions panel. You should see a large area to put text in. If you only see a small strip, you are in normal mode. This is bad, even though you are a beginner you want expert mode. Change to expert mode before you begin this tutorial. |
Make sure the check is on expert mode, not normal mode. |
Alright! You should be good to go for the next sections of the tutorial. |
Now before some of you get angry because I attacked normal mode, I must say that it does have its uses. However, I have never used. In normal mode you have to use this (or the alternative on the left to edit code. This annoys me greatly. For the sake of this tutorial, you will want to be in expert mode so that you can type in code with the keyboard and not select it out of a menu. |
Advanced Topics |
So, moving on to the advanced topics are we? This stuff is a little more complicated then the beginner stuff (Duh) but it's a lot more fun when you get used to it. Plus, you look like a pro actionscripter (because you will be) and your code will be cleaner and more efficient. Inspired? Lets move on. |
Main Menu |
While Loops |
while(something==true){ this._x+=5; } While loops are not complicated. They just basically do what's inside of the {} forever until the condition inside the () becomes false. Likewise, this: while(true){ //blah } Would loop forever. |
While Loops : Uses |
Whatever you are inspired to do, don't use while loops for counting. You'll see why I say that once you get to for loops in about 2 frames. The main use of while loops is to do something that wont have a set end. (If it has a set end, just use a for loop) A great example (I'd say this is used in 99% of all real computer games) is that you have a game that needs to run a certain function until gameover. while(gameOver==true){ _root.gameProcesses(); _root.detectCollision(); } |
Intro to For Loops |
Lets say you decided to neglect my advice and make a while loop that counted from 1 to 10. (How could you?) You would do it like this: var i=0; while(i<10){ i++; } This translates exactly into: for(i=1;i<10;i++) { trace(i); } Now, on to the actual definition of for loops and stuff. |
For Loops |
Ever want to do a lot of repetitive stuff? For loops are the answer, my friend. What they do will count from a certain number to another number, and then do everything in curly brackets {} that many times. The basic syntax looks like this for(starting value of counting variable; loop while this condition is true (usually ending value of counting variable here); increment value of variable) { //stuff here } Makes sense? Not particularly? Okay, here's some code. Code always helps me see. for(i=1;i<10;i++) { trace(i); } So what does that do? Think carefully, this is a little bit of a trick question. Hit next when you think you've got an answer. |
Surprise! Now why would it do that? Look at the code here a little carefully: for(i=1;i<10;i++) { trace(i); } If you can figure out why this only prints to 9, you'll have a good foot in debugging. |
For Loops and More For Loops |
Figure it out? Look here: for(i=1;i<10;i++) { trace(i); } Well thats saying as long as i is less then 10, stay in the for loop. So when i is actually equal to 10, it is no longer less then 10. So it quits out. Simple? Yeah. Other For Loops The For loop I just made you look at was a typical count to 10 and then stop loop. There is a lot more you can do with that piece of code. Watch: for(i=10;i>0;i--) { trace(i); } Counts BACKWARDS!! :o |
Yet More For Loops |
for(i=1;i<10;i+=.5) { trace(i); } Counts by HALVES!! :O Okay, I think you should be getting the point by now. It isn't that hard, right? |
Arrays |
What are arrays? Simply, Arrays are a lot of variables all in one place. Makes no sense? Let's say that you have a hand of cards. You have a 5, a 7, and a 3. Now you would make an array called Cards: Cards = new Array(5, 7, 3); trace(Cards[1]); //traces 5, because 5 is the first card trace(Cards[2]); //traces 7, because 7 is the second card Starting to make sense? |
Arrays Continued |
"Thats interesting and all, but it seems like a pain to use them." No. Arrays are not supposed to be painful. Arrays are supposed to be HUGELY HELPFUL! Lets say you have like 50 bullets and you want to keep track of all of them. All you know is that their names are "b"+some number (thats how you made them) How would you do this without arrays? 50 variables? Never. Ever. Use. That. Many. Variables. NEVER! Watch me do some awesome stuff. for(i=1;i<50;i++) { bullets[i]=eval("_root.b"+i); } If you don't understand what that does, it loops through every bullet. It assigns the bullets MC (it obtains the MC through the statement eval which basically turns the flash statement in () into a real statement) to the corresponding array number while continuing to use the same variable i. |
2-D Arrays |
"What about an array of arrays?" Now some of you may be wondering why on earth you would want to make an array of arrays. An excellent reason is for games that are based with tiles. Tilebased games basically just means that all the graphics in the game are split up into various tiles. I'm going to steal an excellent picture to show you just how this feat is accomplished. Wow, sez ye, why didn't I ever think of that? Good question. Anyways, as you see, these maps can't be put into one array because its many rows of numbers. So you need two, right? |
2-D Arrays Continued |
Row1 = new Array(10); Row2 = new Array(10); Row3 = new Array(10); Row4 = new Array(10); //and so on. Map = new Array(Row1, Row2, Row3, and so on.) Now you just need to write some script to fill them up. And I'm sure you could do this with some code like so (this is just code in words, so its in normal font) Var MapInChars = "wwwwwwwwwwwww w w w w" and so on, w for walls and blank for ground for i = 1 to length of MapInChars take substring at position i of mapInChars and set Map to be related to it. Not so hard, eh? |
Functions |
Functions are cool. You will learn to like them. And as usual they are very easy to use. The simplest definition of a function would be a group of code statements that you use over and over again. Like say that you wanted to have code to make a movie clip and put its alpha at 50 and have a random _x and _y. You could have the code be repeated 50 times all over your movie, but that would be terribly ineffecient and waste tons of space. Instead, you could just have a function do it all. Watch. function makeMC(){ _root.createMovieClip("bob"/*other parameters here*/); _root.bob._x = Math.random()*_root.width; _root.bob._y = Math.random()*_root.height; _root.bob._alpha =50; } makeMC(); //call the function (e.g. use it) Easy right? Of course it doesn't work, but the main point is for you to understand the concept. |
Now its time for a formal definition. function functionnamehere(arguments here){ code of the function here; here; and even here; return something; } The things that are in itialics are things that you can change around to meet your needs. However, there's still one thing that you should be wondering. What are arguments? No, its not a heated discussion of opinions. Arguments are variables that you can pass (give) to the function. In the function, you can use these arguments as regular variables. Here's an example of why you would want arguments. function timesTwo(numToMultiply){ code of the function here; trace (numToMultiply *2); } timesTwo(6) //traces 12 |
Now you should have a pretty good grip on arguments. If you don't I reccommend fooling around with them for a little bit to get a strong grasp on them. Anyways, I'm going to tread on. You may have noticed that I said something that said return and haven't gone to explain it yet. Time to do it right now. Return means to give back a value when you call the function. For example say your function always returns 2. function yourFunction(){return 2;} trace(yourFunction); //traces 2, always Now you may be wondering what the point of return is, if all you can return is whole numbers. Hopefully you aren't, and with any luck you should have realized that you can return just about anything you want. function dblANumber(num){return num*2;} trace(dlbANumber(2)); //traces 4 And as you should expect, this is only the beginning. |
Functions should start looking pretty useful right about now. Indeed, you can use the return value of a function like any normal variable. Just pretend that the function IS a variable for this to make the most sense. function makeMC(){ var retMC = _root.attachMovie("bob"/*other parameters here*/); _root.bob._x = Math.random()*_root.width; _root.bob._y = Math.random()*_root.height; _root.bob._alpha =50; return retMC; } makeMC()._visible=false; All making sense? I would hope so. See, makeMC returns the value of the movie clip that is created. This value is instantly put into the code statement, meaning that you can use it straight off the bat and set its properties. Cool, huh? |
Object Orientated Programming |
Now we are getting into some pretty heavy material. There is a problem though, and that would be that you when you create an object (as you are about to) you have to create a .as file and then import it into your flash project. Honestly this is a bit of a pain and I'm not quite sure why they make you do this. Anyways, classes are a rather more complex topic then everything up to this point. I'll take the material a little slower to make sure you understand everything. In it's simplest form, a class can be any object. For example, an enemy in your game could be a class. The main character could be a seperate class. Walls and collideable objects may be a class. Indeed, this is how most games are written: seperate entities are divided into classes. |
Anyways, lets start from the beginning. Here's your formal definition of a class (complicated stuff taken out :). class className { // class related things go in here } Okay, so far this is all well and good. You could now make 1000 classes, unfortunately they'd all be completely pointless because they wouldn't actually do anything. So I suppose we need something that makes classes do stuff? Yes. When I gave you a definition of a class a little bit ago, I didn't mention a few important things. You see, classes can do a lot. Classes can have their own functions to do things (related to the class), and they can have their own variables to manipulate (they should also be related to the class). And now its time for the schocking story line twist. As it would be, you have been using classes all along. I'd be impressed if you could tell me what they are. |
The answer: Movieclips! Movieclips have tons of variables that you can manipulate, like _x, _y, _alpha and so on. Not only that, but they also have functions that you can use! One example would be lineTo(). Now, lets get started on making your own. Lets say that you would want to make an enemy class. It would have a function for damaging it, moving it and killing it, and it would have variables for its health, x and y position and maybe damage it can deal. Well this shouldn't be too hard right? Just watch how I add variables, its easy! Pay attention how I specifically note what the variables are with colons. This is just so nothing gets screwed up (like if you type in "ffp" as the health, it would alert you rather then continuing) class enemy { var health:Number; var x:Number; var y:Number; var damageDealt:Number; But that can't be all of it, can it? Heck no! Onwards!! |
//continued from previous var thisClip:MovieClip; //the actual graphic of the enemy function damage(dmgAmt:Number) { this.health-=dmgAmt; //"this" simply refers to this class } function move(xDist, yDist){ this.thisClip._x +=xDist; this.thisClip._y +=yDist; } function kill(){ this.thisClip.gotoAndPlay("deathAnimation"); } Seems like it should be done now right? Actually, there's one more thing that you need, and that is called a constructor. This is a function that is used to give it some beginning values. The constructor is always called right as the class is created. In this constructor, certain things will be the same for each enemy (for instance, each enemy will have 100 HP) and some things will set by the user, like where each enemy is located onscreen. How will we set the location? Simple as usual. The constructor is a function, meaning it takes arguments. Set variables could be arguments to the constructor, right? |
//The constructor: it having the same name as the actual class is NOT //a coincidence. All constructors must have the same name. function enemy(xPos, yPos){ this.health=100; //same every time as we agreed this.thisClip = _root.attachMovie("enemy", blah blah blah, user specific stuff goes here) this.thisClip._x = xPos; //set by user when the class is created as //you'll see this.thisClip._y = yPos; //same as before } } //end of class And thats the end of the class! Now there's just one more thing. In the actual flash document, not the .AS you created, you'll need to actually make an instance of it. It's just like your calling a function (the constructor), except that you're creating an object by doing so. var enemyTest:enemy = new enemy(20,50); Wow, that was easy! And fun too! |
Of course, I have barely scraped the surface of OOP. My goal by writing this is not to give you everything that you could ever ask for, because I would be writing a 1000 page book. Instead, I want to give you enough to understand whats happening, and the ability to look into flash's help and understand exactly what they are talking about. Anyways, ONWARDS!!! |
Listeners |
Listeners are easy. I'm only going to spend two pages on them, but of course you need classes to understand what your doing here (programming builds on itself). First lets just go with the mouse listener as my example listener. If your wondering about what functions you have to implement (you'll see what I'm talking about in a second) First when dealing with listeners I would do something like type in Mouse. and then go :O mouse needs a listener (because the little box popped up saying addListener) So then I would hit F1 and see what the requirements of the listener. Straight from the help: "Method; registers an object to receive notifications of the onMouseDown, onMouseMove, and onMouseUp listeners." Well, that makes it a little easier doesn't it? Now I just need to make an object that has those three functions, so it can deal with them seperately. Go on to see how you add functions to objects, its a little different then classes but the concept is the same. |
listener = new Object(); listener.onMouseDown = function () { trace ("Mouse is down"); } listener.onMouseUp = function () { trace ("Mouse is up"); } listener.onMouseMove = function () { trace ("Mouse moved"); } So now we have an object with three functions just waiting to be called. (Of course in a real application of a listener, they wouldn't just trace something useless, they'd actually do important stuff.) Now what? Now, we give the object to the mouse so it can do whatever it wants with it. Key.addListener(listener); And to get rid of it: Key.removeListener(listener); Easy! |
Code Centralization |
This is a simple topic as well. Even shorter then listeners. What code centralization is is simply putting all code for all parts of the movie in one place. The main advantage of this is there is no more hunting around in movie clips and clips IN movie clips for your code that you need, just to find out its the wrong one... With centralization, all you have to do is browse 1 frame for all the code you need, assuming that you have all your MCs in the same frame. Anyways, lets say you want to put an onClipEvent(enterFrame) in the main frame, even though its from a movieclip. It would be done like so //this is the frame's code _root.yourMC.onEnterFrame=function(){ //MCs code goes here, blah blah } _root.a_different_mcs.onMouseDown=function(){ //other code goes here } Easy. Just remember to add the 'on' in front of the thing thats happening and there should be no problems here. Likewise, a button's on press code would be onPress, and so on. This is a simple thing that can save you tons of time. |
Prototypes |
Prototypes are pretty easy. I'm going to start out by showing you how its done with already known code, then show how it can be done easier. Okay. Lets say you want to give all movieclips a new function. It is totally legal to give MovieClips as many functions as you want, whether they existed beforehand or not. OnEnterFrame, for example, existed beforehand (Thats why it was blue.) Lets add one that doesn't exist for the fun of it. However, there's a problem. There is no easy way to give functions to ALL movieclips! To accomplish this, you need to have an array of every known movieclip in your flash movie, and then individually hand out functions. It is quite a pain: for (i=1;i<_root.mcs.length();i++) { mcs[i].newFunction=function(){ //stuff here } } What a pain! Plus, this is really annoying since you need to add movieclips to the array every time you want to do this... Of course as you should have guessed, there's an easier way. Lets find out how. |
MovieClip.Prototype.newFunction=function(){ //stuff here. } WHOA!! So easy!! You can add functions to all MovieClip just with a short section of code like that! Isn't that awesome? It should be. MovieClip.Prototype.someNumber=7; Bet you can guess what I just did there... Now every single MovieClip also has a new variable: someNumber. As you should have guessed, the variable's starting number is 7. Yay! |
Ok, before we get to the subject of debugging, we have to cover color manipulation in flash. I'm going to cover the hexidecimal system for colors and the color object. Color in Flash is composed of mixtures red, green, and blue (RGB). Note that RGB doesn't respect what's already there, it totally changes the color to what you set it to be. If you want it to, you have to set the alpha of the color in the Color Mixer. |
Var myColor = new Color(MovieClip); StarColar.setRGB(0xRRGGBB);//of course you wouldn't put in the letters, //rather you would put in something to suggest Red, green, or blue. |
So now you see the technique for RGB color manipulation, but what do I put to replace the red letters from the above example so I'm actually setting a real color? Like, in the Color Mixer? |
Intermission: Colors! |
0xff0000 (Red) |
0x00ff00 (Green) |
0x0000ff (Blue) |
Now each two digits represent a color. The numbers can go from 00 (none of that color) to FF (all of that color) Instead of counting from 0 to 9 as our normal number system does though, this one actually counts from 0 to F. (0123456789ABCDEF) F being 15. No idea why they did it (probably just to confuse you) but its easy to understand. Plus if you just totally give up, you can copy numbers from the color mixer. If you play around with it though, you can get some cool stuff. |
Although I've only scratched the surface of colors, I hope that beyond this you will go on to work with creating graphics with ActionScript. With ActionScript you can create gradient fills and draw lines. If you have flash 8 you can animate filters and do some pretty nifty color/matrix effects with flash. |
Its easy to see why I have someone else do my graphics. |
Debugging |
I've saved the best for last. I'm certain that when you've written flash games, you've tested them for syntax errors and you get no problems. Then you go to test out your game, and for some reason or another, nothing is working!! (If not, contact me, because so far I haven't seen a perfect programmer ever ever ever, I'd say that even the designer of the programming language makes bugs daily) Bugs are the bane of most programmer's existance. If programming could be bugfree 100% of the time, I wouldn't even need to teach you how to script, and there would be no need for programmers anywhere. Now you could spend hours rooting through your code looking for your bug (and being ultimately doomed), but there are much faster and better ways. I will step through the methods that you can use to determine where your programming bug is, so you can get back to coding faster and better. A really bad bug can truly kill off your whole game and just make you lose intrest (it definitely happens to me), so the faster and more effecient you can debug, the faster you'll get back on track and keep your inspiration. |
Common Errors |
These are my top three. They are all admittently very simple, yet they are so easy to make and look over. 1. Confusing == with = I don't know why the designer of C++ (what actionscript is based off of) decided this, but == and = are two completely different things. = sets a variable to a value. == checks comparison. We have already gone over this, but it simply can not be overstated. The most common error would be something like this: if (bob=5){//stuff} The thing about this error is that nothing is wrong with the code. First, it sets bob to 5. Then since it was able to set it to 5, that statement will return true - (meaning that it did its desired result, every statement returns true if it works and false if it doesn't, and I do mean every) and it will do the code inside the brackets. You'll end up wondering why it keeps on doing whats inside the if statement, and then realize that bob is set to the wrong value. This is very annoying, but all you have to do is check your if statements very carefully for == as opposed to =. |
2. Forgetting _root This one is way easier to explain then that last one. Say you have a variable called bob on a main frame on the timeline. Then you click on a movieclip, and say bob+=5; Suprise! Nothing works. This is because, as you should be able to see, it should actually be _root.bob+=5; . This is annoying because it will set a variable named bob on the main movie clip to itself plus 5, so if you did trace(bob) and continued forgetting _root, it would work and show the right value, even though it's being assigned to the wrong variable!! The best way to avoid this error is to be as meticulous as possible when keeping track of variables. Incidentally, this can also be reversed. For instance, if you have a variable on the movieclip, then reference it with _root, it wouldn't set the right one. |
3. Getting paths messed up This one is also a pain. Fortunately, it's probably the easiest to avoid if you use a convienant little tool flash provided. See when I make my movies, I make movieclips inside movieclips inside movieclips (mainly so I can tween or otherwise animate them without getting a headache ;) and you'll probably get used to the habit too. It is very easy when you have 5 movieclips all inbedded inside each other to screw up the code to access the deepest one, like if I had MC bob, which is inside fred, which is inside george, which is inside bob2, and I accessed bob like this: _root.bob2.fred.george.bob._x... Your eyes would just glance over that and figure it's right, when in actuallity its wrong. Fortunately, Flash gives you a tool to find paths, both absolute and relative. As a rule of thumb, use it whenever you have to deal with more then 2 imbedded movieclips. |
General Debugging |
x Narrow down your problem to small areas of code. Obviously something that you finished 2 months ago isn't just going to stop working; I'd say you were better off looking at that code you just wrote 10 minutes ago. x If something is drastically wrong, try commenting out blocks until the problem goes away, then narrow it down to sections, and then lines of code. x Trace is your best friend. Always trace every variable your modifying, just to make sure that your doing everything right. If it's not working out, I would be willing to bet money it's one of thoese 3 errors I just listed :) x Clicking to the left of a line lets you put in a breakpoint. If you then hit Ctrl+Shift+Enter, you will go into debug mode. Flash will run normally until it hits a breakpoint, and then you can watch it execute each line of code. This can be super helpful, but there are certain problems, such as if you have a really long loop and its not working and you have to wait for it to go all the way through the loop. Then its more of a pain then a gain. x If you are absolutely stumped, you can always send your problem to the Newgrounds BBS. The people there will surely try to help you out. Happy coding! :) -johnfn |
ActionScript [AS1/AS2]
Frame 2play(); _root.mus = new Sound(); _root.mus.attachSound("ots"); _root.mus.start(0, 1000);Frame 5stop(); _global.goto = function () { gotoAndStop (5); }; _global.goto2 = function () { gotoAndStop (6); }; _global.goto3 = function () { gotoAndStop (100); };Frame 6stop();Frame 7stop();Instance of Symbol 119 MovieClip in Frame 7onClipEvent (enterFrame) { Mouse.show(); }Frame 8stop();Frame 9stop();Frame 10stop();Frame 11stop();Frame 12stop();Frame 13stop();Frame 14stop();Frame 15stop();Frame 16stop();Instance of Symbol 119 MovieClip in Frame 16onClipEvent (enterFrame) { Mouse.show(); }Frame 17stop();Frame 18stop();Frame 19stop();Frame 20stop();Frame 21stop();Frame 22stop();Frame 23stop();Instance of Symbol 119 MovieClip in Frame 23onClipEvent (enterFrame) { Mouse.show(); }Frame 24stop();Instance of Symbol 233 MovieClip in Frame 24onClipEvent (enterFrame) { if (this._x < 100) { this._x = this._x + 5; } }Frame 25stop();Frame 26stop();Frame 27stop();Instance of Symbol 241 MovieClip in Frame 27onClipEvent (enterFrame) { this._x = _root._xmouse; this._y = _root._ymouse; }Frame 28stop();Frame 29stop();Instance of Symbol 247 MovieClip in Frame 29onClipEvent (enterFrame) { if (Key.isDown(38)) { this._y = this._y - 5; } }Frame 30stop();Frame 31stop();Frame 32stop();Instance of Symbol 251 MovieClip in Frame 32onClipEvent (enterFrame) { if (Key.isDown(38)) { this._y = this._y - 5; } if (Key.isDown(40)) { this._y = this._y + 5; } if (Key.isDown(37)) { this._x = this._x - 5; } if (Key.isDown(39)) { this._x = this._x + 5; } }Frame 33stop();Frame 34stop();Frame 35stop();Instance of Symbol 119 MovieClip in Frame 35onClipEvent (enterFrame) { Mouse.show(); }Frame 36stop();Frame 37stop();Frame 38stop();Frame 39stop();Frame 40stop();Frame 41stop();Frame 42stop();Frame 43stop();Instance of Symbol 290 MovieClip in Frame 43onClipEvent (enterFrame) { Mouse.show(); }Frame 44stop();Instance of Symbol 299 MovieClip "ball" in Frame 44onClipEvent (enterFrame) { Mouse.hide(); }Instance of Symbol 301 MovieClip in Frame 44onClipEvent (enterFrame) { this._x = _root._xmouse; this._y = _root._ymouse; }Frame 45stop();Instance of Symbol 290 MovieClip in Frame 45onClipEvent (enterFrame) { Mouse.show(); }Frame 46stop();Instance of Symbol 119 MovieClip in Frame 46onClipEvent (enterFrame) { Mouse.show(); }Frame 47stop();Frame 48stop();Frame 49stop();Frame 50stop();Frame 51stop();Frame 52stop();Frame 53stop();Frame 54stop();Frame 55stop();Frame 56stop();Frame 57stop();Frame 58stop();Frame 59stop();Frame 60stop();Instance of Symbol 119 MovieClip in Frame 60onClipEvent (enterFrame) { Mouse.show(); }Frame 61stop();Frame 62stop();Frame 63stop();Instance of Symbol 119 MovieClip in Frame 63onClipEvent (enterFrame) { Mouse.show(); }Frame 64stop();Instance of Symbol 299 MovieClip "ball" in Frame 64onClipEvent (enterFrame) { if (_root._xmouse > this._x) { this._x = this._x - 2; } else { this._x = this._x + 2; } if (_root._ymouse > this._y) { this._y = this._y - 2; } else { this._y = this._y + 2; } Mouse.hide(); }Instance of Symbol 301 MovieClip in Frame 64onClipEvent (enterFrame) { this._x = _root._xmouse; this._y = _root._ymouse; }Frame 65stop();Instance of Symbol 119 MovieClip in Frame 65onClipEvent (enterFrame) { Mouse.show(); }Frame 66stop();Frame 67stop();Frame 68stop();Frame 69stop();Frame 70stop();Frame 71stop();Instance of Symbol 251 MovieClip in Frame 71onClipEvent (enterFrame) { if (Key.isDown(38)) { this._y = this._y - 5; } if (Key.isDown(40)) { this._y = this._y + 5; } if (Key.isDown(37)) { this._x = this._x - 5; } if (Key.isDown(39)) { this._x = this._x + 5; } }Frame 72stop();Instance of Symbol 251 MovieClip in Frame 72onClipEvent (load) { vx = 5; vy = 5; friction = 0.92; } onClipEvent (enterFrame) { vx = vx * friction; vy = vy * friction; this._x = this._x + vx; this._y = this._y + vy; if (Key.isDown(38)) { vy = vy - 2; } if (Key.isDown(40)) { vy = vy + 2; } if (Key.isDown(37)) { vx = vx - 2; } if (Key.isDown(39)) { vx = vx + 2; } }Frame 73stop();Frame 74stop();Frame 75stop();Frame 76stop();Frame 77stop();Frame 78stop();Frame 79stop();Frame 80stop();Frame 81stop();Frame 82stop();Frame 83stop();Frame 84stop();Frame 85stop();Frame 86stop();Frame 87stop();Frame 88stop();Frame 89stop();Frame 90stop();Frame 91stop();Frame 92stop();Frame 93gotoAndStop (6);Frame 94stop();Frame 95stop();Frame 96stop();Frame 97stop();Frame 98stop();Frame 99gotoAndStop (6);Frame 100stop();Frame 101stop();Frame 102stop();Frame 103stop();Frame 104stop();Frame 105stop();Frame 106stop();Frame 107stop();Frame 108stop();Frame 109stop();Frame 110stop();Frame 111stop();Frame 112stop();Frame 113stop();Frame 114stop();Frame 115stop(); Mouse.addListener(listener);Frame 116stop();Frame 117stop();Frame 118stop(); var health:Number;Frame 119stop(); var health:Number;Frame 120stop(); var health:Number;Frame 121stop();Frame 122stop();Frame 123stop();Frame 124stop();Frame 125stop();Frame 126stop();Frame 127stop();Frame 128stop();Frame 129stop();Frame 130stop();Frame 131stop();Frame 132stop();Frame 133stop();Symbol 7 Buttonon (release) { getURL ("http://www.newgrounds.com", "blank"); }Symbol 12 Buttonon (release) { _root.play(); }Symbol 13 MovieClip Frame 1_root.stop(); PercentLoaded = (_root.getBytesLoaded() / _root.getBytesTotal()) * 100; if (PercentLoaded != 100) { bar._xscale = PercentLoaded; } else { gotoAndStop ("loaded"); }Symbol 13 MovieClip Frame 2gotoAndPlay (1);Symbol 34 Buttonon (press) { gotoAndStop (6); } on (rollOver) { _root.f1.gotoAndPlay(2); } on (rollOut) { _root.f1.gotoAndPlay(10); }Symbol 38 Buttonon (press) { gotoAndPlay (100); } on (rollOver) { _root.f2.gotoAndPlay(2); } on (rollOut) { _root.f2.gotoAndPlay(10); }Symbol 44 MovieClip Frame 1stop();Symbol 44 MovieClip Frame 9stop();Symbol 44 MovieClip Frame 17stop();Symbol 54 Buttonon (press) { play(); }Symbol 62 Buttonon (press) { gotoAndStop (75); }Symbol 66 Buttonon (press) { gotoAndStop (5); }Symbol 69 Buttonon (press) { gotoAndPlay (100); }Symbol 75 Buttonon (press) { gotoAndStop (81); }Symbol 81 Buttonon (press) { gotoAndStop (94); }Symbol 88 Buttonon (press) { stopAllSounds(); _root.mus = new Sound(); _root.mus.attachSound("ots"); _root.mus.start(0, 1000); }Symbol 92 Buttonon (press) { stopAllSounds(); _root.mus = new Sound(); _root.mus.attachSound("yay"); _root.mus.start(0, 1000); }Symbol 94 Buttonon (press) { _global.goto(); }Symbol 96 Buttonon (press) { _global.goto2(); }Symbol 98 Buttonon (press) { _global.goto3(); }Symbol 101 Buttonon (rollOver) { _root.men.gotoAndPlay(30); }Symbol 106 Buttonon (press) { stopAllSounds(); }Symbol 107 MovieClip Frame 1stop();Symbol 107 MovieClip Frame 30stop();Symbol 107 MovieClip Frame 45stop(); _root.menutxt._visible = true;Symbol 110 Buttonon (rollOver) { _root.men.gotoAndPlay(2); _root.menutxt._visible = false; }Symbol 126 Buttonon (press) { gotoAndStop (7); }Symbol 132 Buttonon (press) { gotoAndStop (16); }Symbol 138 Buttonon (press) { gotoAndStop (23); }Symbol 142 Buttonon (press) { gotoAndStop (35); }Symbol 147 Buttonon (press) { gotoAndStop (46); }Symbol 153 Buttonon (press) { gotoAndStop (60); }Symbol 156 Buttonon (press) { prevFrame(); }Symbol 159 Buttonon (press) { play(); }Symbol 292 Buttonon (press) { _root.ball.play(); }Symbol 299 MovieClip Frame 1stop();Symbol 299 MovieClip Frame 2stop();Symbol 299 MovieClip Frame 3stop();Symbol 299 MovieClip Frame 4stop();Symbol 299 MovieClip Frame 5stop();Symbol 299 MovieClip Frame 6stop();Symbol 299 MovieClip Frame 7stop();Symbol 299 MovieClip Frame 8stop();Symbol 299 MovieClip Frame 9stop();Symbol 299 MovieClip Frame 10this.removeMovieClip(); stop();Symbol 393 Buttonon (press) { gotoAndStop (7); }Symbol 396 Buttonon (press) { gotoAndPlay (100); }Symbol 399 Buttonon (press) { gotoAndStop (5); }Symbol 402 Buttonon (press) { gotoAndStop (75); }Symbol 431 Buttonon (press) { play(); }Symbol 435 Buttonon (press) { gotoAndStop (84); }Symbol 437 Buttonon (press) { play(); }Symbol 439 Buttonon (press) { play(); }Symbol 441 Buttonon (press) { play(); }Symbol 448 Buttonon (press) { gotoAndStop (86); }Symbol 450 Buttonon (press) { play(); }Symbol 455 Buttonon (press) { gotoAndStop (88); }Symbol 457 Buttonon (press) { play(); }Symbol 462 Buttonon (press) { gotoAndStop (90); }Symbol 464 Buttonon (press) { play(); }Symbol 466 Buttonon (press) { play(); }Symbol 468 Buttonon (press) { play(); }Symbol 477 Buttonon (press) { gotoAndStop (92); }Symbol 479 Buttonon (press) { play(); }Symbol 509 Buttonon (press) { _root.nextFrame(); }Symbol 511 Buttonon (press) { gotoAndStop (5); }Symbol 516 Buttonon (press) { _root.prevFrame(); }
Library Items
Symbol 1 Graphic | Used by:13 | |
Symbol 2 Graphic | Used by:3 | |
Symbol 3 MovieClip | Uses:2 | Used by:13 |
Symbol 4 Graphic | Used by:13 | |
Symbol 5 Graphic | Used by:6 7 | |
Symbol 6 MovieClip | Uses:5 | Used by:7 |
Symbol 7 Button | Uses:6 5 | Used by:13 |
Symbol 8 Graphic | Used by:12 | |
Symbol 9 Graphic | Used by:12 | |
Symbol 10 Graphic | Used by:12 | |
Symbol 11 Graphic | Used by:12 | |
Symbol 12 Button | Uses:8 9 10 11 | Used by:13 |
Symbol 13 MovieClip | Uses:1 3 4 7 12 | Used by:Timeline |
Symbol 14 Font | Used by:15 16 17 18 20 21 | |
Symbol 15 Text | Uses:14 | Used by:Timeline |
Symbol 16 Text | Uses:14 | Used by:Timeline |
Symbol 17 Text | Uses:14 | Used by:Timeline |
Symbol 18 Text | Uses:14 | Used by:Timeline |
Symbol 19 Font | Used by:20 21 83 84 86 89 91 93 95 97 99 103 105 108 120 171 173 201 332 333 510 529 571 572 573 575 576 581 582 583 | |
Symbol 20 Text | Uses:14 19 | Used by:Timeline |
Symbol 21 Text | Uses:14 19 | Used by:Timeline |
Symbol 22 Sound [ots] | Used by:Timeline | |
Symbol 23 Sound [yay] | Used by:Timeline | |
Symbol 24 Bitmap | Used by:25 | |
Symbol 25 Graphic | Uses:24 | Used by:Timeline |
Symbol 26 Font | Used by:27 | |
Symbol 27 Text | Uses:26 | Used by:Timeline |
Symbol 28 Graphic | Used by:34 38 | |
Symbol 29 Font | Used by:30 35 | |
Symbol 30 Text | Uses:29 | Used by:34 |
Symbol 31 Font | Used by:32 33 36 37 50 52 58 59 61 64 67 73 74 115 116 117 122 128 134 139 144 149 170 178 185 189 190 191 192 193 194 195 196 207 208 209 210 229 234 250 270 318 319 320 325 342 352 353 356 360 372 374 376 383 384 391 394 397 400 403 404 405 407 409 410 411 412 413 414 415 416 417 418 419 420 421 422 425 426 427 428 429 432 433 436 438 440 442 443 444 445 447 449 451 452 453 454 456 458 459 460 463 465 467 469 470 471 472 473 474 475 476 478 480 481 482 | |
Symbol 32 Text | Uses:31 | Used by:34 |
Symbol 33 Text | Uses:31 | Used by:34 |
Symbol 34 Button | Uses:28 30 32 33 | Used by:Timeline |
Symbol 35 Text | Uses:29 | Used by:38 |
Symbol 36 Text | Uses:31 | Used by:38 |
Symbol 37 Text | Uses:31 | Used by:38 |
Symbol 38 Button | Uses:28 35 36 37 | Used by:Timeline |
Symbol 39 Graphic | Used by:40 | |
Symbol 40 MovieClip | Uses:39 | Used by:41 42 |
Symbol 41 MovieClip | Uses:40 | Used by:Timeline |
Symbol 42 MovieClip | Uses:40 | Used by:Timeline |
Symbol 43 Graphic | Used by:44 | |
Symbol 44 MovieClip | Uses:43 | Used by:Timeline |
Symbol 45 Graphic | Used by:Timeline | |
Symbol 46 Graphic | Used by:54 174 | |
Symbol 47 Font | Used by:48 49 56 57 71 72 76 77 | |
Symbol 48 Text | Uses:47 | Used by:54 |
Symbol 49 Text | Uses:47 | Used by:54 |
Symbol 50 Text | Uses:31 | Used by:54 |
Symbol 51 Graphic | Used by:54 | |
Symbol 52 Text | Uses:31 | Used by:54 |
Symbol 53 Sound | Used by:54 62 75 81 | |
Symbol 54 Button | Uses:46 48 49 50 51 52 53 | Used by:Timeline |
Symbol 55 Graphic | Used by:62 | |
Symbol 56 Text | Uses:47 | Used by:62 |
Symbol 57 Text | Uses:47 | Used by:62 |
Symbol 58 Text | Uses:31 | Used by:62 |
Symbol 59 Text | Uses:31 | Used by:62 |
Symbol 60 Graphic | Used by:62 | |
Symbol 61 Text | Uses:31 | Used by:62 |
Symbol 62 Button | Uses:55 56 57 58 59 60 61 53 | Used by:Timeline |
Symbol 63 Graphic | Used by:66 69 | |
Symbol 64 Text | Uses:31 | Used by:66 |
Symbol 65 Graphic | Used by:66 | |
Symbol 66 Button | Uses:63 64 65 | Used by:Timeline |
Symbol 67 Text | Uses:31 | Used by:69 |
Symbol 68 Graphic | Used by:69 | |
Symbol 69 Button | Uses:63 67 68 | Used by:Timeline |
Symbol 70 Graphic | Used by:75 | |
Symbol 71 Text | Uses:47 | Used by:75 |
Symbol 72 Text | Uses:47 | Used by:75 |
Symbol 73 Text | Uses:31 | Used by:75 |
Symbol 74 Text | Uses:31 | Used by:75 |
Symbol 75 Button | Uses:70 71 72 73 74 53 | Used by:Timeline |
Symbol 76 Text | Uses:47 | Used by:81 |
Symbol 77 Text | Uses:47 | Used by:81 |
Symbol 78 Font | Used by:79 111 120 124 130 136 141 145 151 161 162 163 164 165 166 168 169 170 175 176 177 180 181 182 183 184 186 187 197 198 199 200 201 202 203 204 205 211 212 213 215 216 217 218 220 221 223 224 225 226 227 228 229 230 231 235 236 237 238 239 240 243 244 245 246 248 249 252 253 254 255 256 257 258 259 260 261 262 263 264 265 267 268 269 272 273 274 275 276 277 278 279 281 282 283 284 285 286 287 288 302 303 304 305 307 308 310 311 312 314 315 316 317 318 324 325 326 327 328 329 330 331 337 338 339 340 341 342 343 344 345 346 347 351 354 355 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 379 380 381 384 385 386 387 388 389 408 485 486 489 490 493 494 495 496 499 500 501 523 524 529 531 556 557 559 560 562 564 565 566 567 568 574 578 581 582 583 587 | |
Symbol 79 Text | Uses:78 | Used by:81 |
Symbol 80 Graphic | Used by:81 | |
Symbol 81 Button | Uses:76 77 79 80 53 | Used by:Timeline |
Symbol 82 Graphic | Used by:107 | |
Symbol 83 Text | Uses:19 | Used by:107 |
Symbol 84 Text | Uses:19 | Used by:107 |
Symbol 85 Graphic | Used by:88 92 94 96 98 | |
Symbol 86 Text | Uses:19 | Used by:88 94 |
Symbol 87 Graphic | Used by:88 92 94 96 98 | |
Symbol 88 Button | Uses:85 86 87 | Used by:107 |
Symbol 89 Text | Uses:19 | Used by:92 96 |
Symbol 90 Graphic | Used by:92 98 106 | |
Symbol 91 Text | Uses:19 | Used by:92 98 106 |
Symbol 92 Button | Uses:85 89 87 90 91 | Used by:107 |
Symbol 93 Text | Uses:19 | Used by:94 |
Symbol 94 Button | Uses:85 86 87 93 | Used by:107 |
Symbol 95 Text | Uses:19 | Used by:96 |
Symbol 96 Button | Uses:85 89 87 95 | Used by:107 |
Symbol 97 Text | Uses:19 | Used by:98 |
Symbol 98 Button | Uses:85 91 87 97 90 | Used by:107 |
Symbol 99 Text | Uses:19 | Used by:101 |
Symbol 100 Graphic | Used by:101 | |
Symbol 101 Button | Uses:99 100 | Used by:107 |
Symbol 102 Graphic | Used by:106 | |
Symbol 103 Text | Uses:19 | Used by:106 |
Symbol 104 Graphic | Used by:106 | |
Symbol 105 Text | Uses:19 | Used by:106 |
Symbol 106 Button | Uses:102 103 104 105 90 91 | Used by:107 |
Symbol 107 MovieClip | Uses:82 83 84 88 92 94 96 98 101 106 | Used by:Timeline |
Symbol 108 Text | Uses:19 | Used by:110 |
Symbol 109 Graphic | Used by:110 | |
Symbol 110 Button | Uses:108 109 | Used by:Timeline |
Symbol 111 Text | Uses:78 | Used by:Timeline |
Symbol 112 Font | Used by:113 | |
Symbol 113 Text | Uses:112 | Used by:Timeline |
Symbol 114 Font | Used by:115 116 | |
Symbol 115 Text | Uses:114 31 | Used by:Timeline |
Symbol 116 Text | Uses:114 31 | Used by:Timeline |
Symbol 117 Text | Uses:31 | Used by:Timeline |
Symbol 118 Graphic | Used by:119 | |
Symbol 119 MovieClip | Uses:118 | Used by:Timeline |
Symbol 120 Text | Uses:78 19 | Used by:Timeline |
Symbol 121 Graphic | Used by:126 142 | |
Symbol 122 Text | Uses:31 | Used by:126 |
Symbol 123 Graphic | Used by:126 | |
Symbol 124 Text | Uses:78 | Used by:126 |
Symbol 125 Graphic | Used by:126 142 | |
Symbol 126 Button | Uses:121 122 123 124 125 | Used by:Timeline |
Symbol 127 Graphic | Used by:132 | |
Symbol 128 Text | Uses:31 | Used by:132 |
Symbol 129 Graphic | Used by:132 147 | |
Symbol 130 Text | Uses:78 | Used by:132 |
Symbol 131 Graphic | Used by:132 | |
Symbol 132 Button | Uses:127 128 129 130 131 | Used by:Timeline |
Symbol 133 Graphic | Used by:138 | |
Symbol 134 Text | Uses:31 | Used by:138 |
Symbol 135 Graphic | Used by:138 | |
Symbol 136 Text | Uses:78 | Used by:138 |
Symbol 137 Graphic | Used by:138 | |
Symbol 138 Button | Uses:133 134 135 136 137 | Used by:Timeline |
Symbol 139 Text | Uses:31 | Used by:142 |
Symbol 140 Graphic | Used by:142 | |
Symbol 141 Text | Uses:78 | Used by:142 |
Symbol 142 Button | Uses:121 139 140 141 125 | Used by:Timeline |
Symbol 143 Graphic | Used by:147 | |
Symbol 144 Text | Uses:31 | Used by:147 |
Symbol 145 Text | Uses:78 | Used by:147 |
Symbol 146 Graphic | Used by:147 | |
Symbol 147 Button | Uses:143 144 129 145 146 | Used by:Timeline |
Symbol 148 Graphic | Used by:153 | |
Symbol 149 Text | Uses:31 | Used by:153 |
Symbol 150 Graphic | Used by:153 | |
Symbol 151 Text | Uses:78 | Used by:153 |
Symbol 152 Graphic | Used by:153 | |
Symbol 153 Button | Uses:148 149 150 151 152 | Used by:Timeline |
Symbol 154 Graphic | Used by:156 | |
Symbol 155 Graphic | Used by:156 | |
Symbol 156 Button | Uses:154 155 | Used by:Timeline |
Symbol 157 Graphic | Used by:159 509 | |
Symbol 158 Graphic | Used by:159 | |
Symbol 159 Button | Uses:157 158 | Used by:Timeline |
Symbol 160 Graphic | Used by:Timeline | |
Symbol 161 Text | Uses:78 | Used by:Timeline |
Symbol 162 Text | Uses:78 | Used by:Timeline |
Symbol 163 Text | Uses:78 | Used by:Timeline |
Symbol 164 Text | Uses:78 | Used by:Timeline |
Symbol 165 Text | Uses:78 | Used by:Timeline |
Symbol 166 Text | Uses:78 | Used by:Timeline |
Symbol 167 Graphic | Used by:Timeline | |
Symbol 168 Text | Uses:78 | Used by:Timeline |
Symbol 169 Text | Uses:78 | Used by:Timeline |
Symbol 170 Text | Uses:78 31 | Used by:Timeline |
Symbol 171 Text | Uses:19 | Used by:174 |
Symbol 172 Graphic | Used by:174 | |
Symbol 173 Text | Uses:19 | Used by:174 |
Symbol 174 Button | Uses:46 171 172 173 | Used by:Timeline |
Symbol 175 Text | Uses:78 | Used by:Timeline |
Symbol 176 Text | Uses:78 | Used by:Timeline |
Symbol 177 Text | Uses:78 | Used by:Timeline |
Symbol 178 Text | Uses:31 | Used by:Timeline |
Symbol 179 Graphic | Used by:Timeline | |
Symbol 180 Text | Uses:78 | Used by:Timeline |
Symbol 181 Text | Uses:78 | Used by:Timeline |
Symbol 182 Text | Uses:78 | Used by:Timeline |
Symbol 183 Text | Uses:78 | Used by:Timeline |
Symbol 184 Text | Uses:78 | Used by:Timeline |
Symbol 185 Text | Uses:31 | Used by:Timeline |
Symbol 186 Text | Uses:78 | Used by:Timeline |
Symbol 187 Text | Uses:78 | Used by:Timeline |
Symbol 188 Graphic | Used by:Timeline | |
Symbol 189 Text | Uses:31 | Used by:Timeline |
Symbol 190 Text | Uses:31 | Used by:Timeline |
Symbol 191 Text | Uses:31 | Used by:Timeline |
Symbol 192 Text | Uses:31 | Used by:Timeline |
Symbol 193 Text | Uses:31 | Used by:Timeline |
Symbol 194 Text | Uses:31 | Used by:Timeline |
Symbol 195 Text | Uses:31 | Used by:Timeline |
Symbol 196 Text | Uses:31 | Used by:Timeline |
Symbol 197 Text | Uses:78 | Used by:Timeline |
Symbol 198 Text | Uses:78 | Used by:Timeline |
Symbol 199 Text | Uses:78 | Used by:Timeline |
Symbol 200 Text | Uses:78 | Used by:Timeline |
Symbol 201 Text | Uses:78 19 | Used by:Timeline |
Symbol 202 Text | Uses:78 | Used by:Timeline |
Symbol 203 Text | Uses:78 | Used by:Timeline |
Symbol 204 Text | Uses:78 | Used by:Timeline |
Symbol 205 Text | Uses:78 | Used by:Timeline |
Symbol 206 Graphic | Used by:Timeline | |
Symbol 207 Text | Uses:31 | Used by:Timeline |
Symbol 208 Text | Uses:31 | Used by:Timeline |
Symbol 209 Text | Uses:31 | Used by:Timeline |
Symbol 210 Text | Uses:31 | Used by:Timeline |
Symbol 211 Text | Uses:78 | Used by:Timeline |
Symbol 212 Text | Uses:78 | Used by:Timeline |
Symbol 213 Text | Uses:78 | Used by:Timeline |
Symbol 214 Graphic | Used by:Timeline | |
Symbol 215 Text | Uses:78 | Used by:Timeline |
Symbol 216 Text | Uses:78 | Used by:Timeline |
Symbol 217 Text | Uses:78 | Used by:Timeline |
Symbol 218 Text | Uses:78 | Used by:Timeline |
Symbol 219 Graphic | Used by:Timeline | |
Symbol 220 Text | Uses:78 | Used by:Timeline |
Symbol 221 Text | Uses:78 | Used by:Timeline |
Symbol 222 Graphic | Used by:Timeline | |
Symbol 223 Text | Uses:78 | Used by:Timeline |
Symbol 224 Text | Uses:78 | Used by:Timeline |
Symbol 225 Text | Uses:78 | Used by:Timeline |
Symbol 226 Text | Uses:78 | Used by:Timeline |
Symbol 227 Text | Uses:78 | Used by:Timeline |
Symbol 228 Text | Uses:78 | Used by:Timeline |
Symbol 229 Text | Uses:78 31 | Used by:Timeline |
Symbol 230 Text | Uses:78 | Used by:Timeline |
Symbol 231 Text | Uses:78 | Used by:Timeline |
Symbol 232 Graphic | Used by:233 241 247 251 299 | |
Symbol 233 MovieClip | Uses:232 | Used by:Timeline |
Symbol 234 Text | Uses:31 | Used by:Timeline |
Symbol 235 Text | Uses:78 | Used by:Timeline |
Symbol 236 Text | Uses:78 | Used by:Timeline |
Symbol 237 Text | Uses:78 | Used by:Timeline |
Symbol 238 Text | Uses:78 | Used by:Timeline |
Symbol 239 Text | Uses:78 | Used by:Timeline |
Symbol 240 Text | Uses:78 | Used by:Timeline |
Symbol 241 MovieClip | Uses:232 | Used by:Timeline |
Symbol 242 Graphic | Used by:Timeline | |
Symbol 243 Text | Uses:78 | Used by:Timeline |
Symbol 244 Text | Uses:78 | Used by:Timeline |
Symbol 245 Text | Uses:78 | Used by:Timeline |
Symbol 246 Text | Uses:78 | Used by:Timeline |
Symbol 247 MovieClip | Uses:232 | Used by:Timeline |
Symbol 248 Text | Uses:78 | Used by:Timeline |
Symbol 249 Text | Uses:78 | Used by:Timeline |
Symbol 250 EditableText | Uses:31 | Used by:Timeline |
Symbol 251 MovieClip | Uses:232 | Used by:Timeline |
Symbol 252 Text | Uses:78 | Used by:Timeline |
Symbol 253 Text | Uses:78 | Used by:Timeline |
Symbol 254 Text | Uses:78 | Used by:Timeline |
Symbol 255 Text | Uses:78 | Used by:Timeline |
Symbol 256 Text | Uses:78 | Used by:Timeline |
Symbol 257 Text | Uses:78 | Used by:Timeline |
Symbol 258 Text | Uses:78 | Used by:Timeline |
Symbol 259 Text | Uses:78 | Used by:Timeline |
Symbol 260 Text | Uses:78 | Used by:Timeline |
Symbol 261 Text | Uses:78 | Used by:Timeline |
Symbol 262 Text | Uses:78 | Used by:Timeline |
Symbol 263 Text | Uses:78 | Used by:Timeline |
Symbol 264 Text | Uses:78 | Used by:Timeline |
Symbol 265 Text | Uses:78 | Used by:Timeline |
Symbol 266 Graphic | Used by:Timeline | |
Symbol 267 Text | Uses:78 | Used by:Timeline |
Symbol 268 Text | Uses:78 | Used by:Timeline |
Symbol 269 Text | Uses:78 | Used by:Timeline |
Symbol 270 Text | Uses:31 | Used by:Timeline |
Symbol 271 Graphic | Used by:Timeline | |
Symbol 272 Text | Uses:78 | Used by:Timeline |
Symbol 273 Text | Uses:78 | Used by:Timeline |
Symbol 274 Text | Uses:78 | Used by:Timeline |
Symbol 275 Text | Uses:78 | Used by:Timeline |
Symbol 276 Text | Uses:78 | Used by:Timeline |
Symbol 277 Text | Uses:78 | Used by:Timeline |
Symbol 278 Text | Uses:78 | Used by:Timeline |
Symbol 279 Text | Uses:78 | Used by:Timeline |
Symbol 280 Graphic | Used by:Timeline | |
Symbol 281 Text | Uses:78 | Used by:Timeline |
Symbol 282 Text | Uses:78 | Used by:Timeline |
Symbol 283 Text | Uses:78 | Used by:Timeline |
Symbol 284 Text | Uses:78 | Used by:Timeline |
Symbol 285 Text | Uses:78 | Used by:Timeline |
Symbol 286 Text | Uses:78 | Used by:Timeline |
Symbol 287 Text | Uses:78 | Used by:Timeline |
Symbol 288 Text | Uses:78 | Used by:Timeline |
Symbol 289 Graphic | Used by:290 299 | |
Symbol 290 MovieClip | Uses:289 | Used by:Timeline |
Symbol 291 Graphic | Used by:292 | |
Symbol 292 Button | Uses:291 | Used by:299 |
Symbol 293 Graphic | Used by:299 | |
Symbol 294 Graphic | Used by:299 | |
Symbol 295 Graphic | Used by:299 | |
Symbol 296 Graphic | Used by:299 | |
Symbol 297 Graphic | Used by:299 | |
Symbol 298 Graphic | Used by:299 | |
Symbol 299 MovieClip | Uses:232 292 293 294 295 296 297 298 289 | Used by:Timeline |
Symbol 300 Graphic | Used by:301 | |
Symbol 301 MovieClip | Uses:300 | Used by:Timeline |
Symbol 302 Text | Uses:78 | Used by:Timeline |
Symbol 303 Text | Uses:78 | Used by:Timeline |
Symbol 304 Text | Uses:78 | Used by:Timeline |
Symbol 305 Text | Uses:78 | Used by:Timeline |
Symbol 306 Graphic | Used by:Timeline | |
Symbol 307 Text | Uses:78 | Used by:Timeline |
Symbol 308 Text | Uses:78 | Used by:Timeline |
Symbol 309 Graphic | Used by:Timeline | |
Symbol 310 Text | Uses:78 | Used by:Timeline |
Symbol 311 Text | Uses:78 | Used by:Timeline |
Symbol 312 Text | Uses:78 | Used by:Timeline |
Symbol 313 Graphic | Used by:Timeline | |
Symbol 314 Text | Uses:78 | Used by:Timeline |
Symbol 315 Text | Uses:78 | Used by:Timeline |
Symbol 316 Text | Uses:78 | Used by:Timeline |
Symbol 317 Text | Uses:78 | Used by:Timeline |
Symbol 318 Text | Uses:78 31 | Used by:Timeline |
Symbol 319 Text | Uses:31 | Used by:Timeline |
Symbol 320 Text | Uses:31 | Used by:Timeline |
Symbol 321 Bitmap | Used by:323 | |
Symbol 322 Bitmap | Used by:323 | |
Symbol 323 Graphic | Uses:321 322 | Used by:Timeline |
Symbol 324 Text | Uses:78 | Used by:Timeline |
Symbol 325 Text | Uses:78 31 | Used by:Timeline |
Symbol 326 Text | Uses:78 | Used by:Timeline |
Symbol 327 Text | Uses:78 | Used by:Timeline |
Symbol 328 Text | Uses:78 | Used by:Timeline |
Symbol 329 Text | Uses:78 | Used by:Timeline |
Symbol 330 Text | Uses:78 | Used by:Timeline |
Symbol 331 Text | Uses:78 | Used by:Timeline |
Symbol 332 Text | Uses:19 | Used by:Timeline |
Symbol 333 Text | Uses:19 | Used by:Timeline |
Symbol 334 Bitmap | Used by:335 | |
Symbol 335 Graphic | Uses:334 | Used by:Timeline |
Symbol 336 Graphic | Used by:Timeline | |
Symbol 337 Text | Uses:78 | Used by:Timeline |
Symbol 338 Text | Uses:78 | Used by:Timeline |
Symbol 339 Text | Uses:78 | Used by:Timeline |
Symbol 340 Text | Uses:78 | Used by:Timeline |
Symbol 341 Text | Uses:78 | Used by:Timeline |
Symbol 342 Text | Uses:78 31 | Used by:Timeline |
Symbol 343 Text | Uses:78 | Used by:Timeline |
Symbol 344 Text | Uses:78 | Used by:Timeline |
Symbol 345 Text | Uses:78 | Used by:Timeline |
Symbol 346 Text | Uses:78 | Used by:Timeline |
Symbol 347 Text | Uses:78 | Used by:Timeline |
Symbol 348 Bitmap | Used by:349 | |
Symbol 349 Graphic | Uses:348 | Used by:Timeline |
Symbol 350 Graphic | Used by:Timeline | |
Symbol 351 Text | Uses:78 | Used by:Timeline |
Symbol 352 Text | Uses:31 | Used by:Timeline |
Symbol 353 Text | Uses:31 | Used by:Timeline |
Symbol 354 Text | Uses:78 | Used by:Timeline |
Symbol 355 Text | Uses:78 | Used by:Timeline |
Symbol 356 Text | Uses:31 | Used by:Timeline |
Symbol 357 Text | Uses:78 | Used by:Timeline |
Symbol 358 Text | Uses:78 | Used by:Timeline |
Symbol 359 Text | Uses:78 | Used by:Timeline |
Symbol 360 Text | Uses:78 31 | Used by:Timeline |
Symbol 361 Text | Uses:78 | Used by:Timeline |
Symbol 362 Text | Uses:78 | Used by:Timeline |
Symbol 363 Text | Uses:78 | Used by:Timeline |
Symbol 364 Text | Uses:78 | Used by:Timeline |
Symbol 365 Text | Uses:78 | Used by:Timeline |
Symbol 366 Text | Uses:78 | Used by:Timeline |
Symbol 367 Text | Uses:78 | Used by:Timeline |
Symbol 368 Text | Uses:78 | Used by:Timeline |
Symbol 369 Text | Uses:78 | Used by:Timeline |
Symbol 370 Text | Uses:78 | Used by:Timeline |
Symbol 371 Text | Uses:78 | Used by:Timeline |
Symbol 372 Text | Uses:31 | Used by:Timeline |
Symbol 373 Graphic | Used by:378 | |
Symbol 374 Text | Uses:31 | Used by:378 |
Symbol 375 Graphic | Used by:378 | |
Symbol 376 Text | Uses:31 | Used by:378 |
Symbol 377 Graphic | Used by:378 | |
Symbol 378 Button | Uses:373 374 375 376 377 | Used by:Timeline |
Symbol 379 Text | Uses:78 | Used by:Timeline |
Symbol 380 Text | Uses:78 | Used by:Timeline |
Symbol 381 Text | Uses:78 | Used by:Timeline |
Symbol 382 Graphic | Used by:Timeline | |
Symbol 383 Text | Uses:31 | Used by:Timeline |
Symbol 384 Text | Uses:78 31 | Used by:Timeline |
Symbol 385 Text | Uses:78 | Used by:Timeline |
Symbol 386 Text | Uses:78 | Used by:Timeline |
Symbol 387 Text | Uses:78 | Used by:Timeline |
Symbol 388 Text | Uses:78 | Used by:Timeline |
Symbol 389 Text | Uses:78 | Used by:Timeline |
Symbol 390 Graphic | Used by:393 396 399 402 431 435 437 439 441 450 455 457 462 464 466 468 477 479 | |
Symbol 391 Text | Uses:31 | Used by:393 |
Symbol 392 Graphic | Used by:393 | |
Symbol 393 Button | Uses:390 391 392 | Used by:Timeline |
Symbol 394 Text | Uses:31 | Used by:396 |
Symbol 395 Graphic | Used by:396 | |
Symbol 396 Button | Uses:390 394 395 | Used by:Timeline |
Symbol 397 Text | Uses:31 | Used by:399 |
Symbol 398 Graphic | Used by:399 | |
Symbol 399 Button | Uses:390 397 398 | Used by:Timeline |
Symbol 400 Text | Uses:31 | Used by:402 |
Symbol 401 Graphic | Used by:402 | |
Symbol 402 Button | Uses:390 400 401 | Used by:Timeline |
Symbol 403 Text | Uses:31 | Used by:Timeline |
Symbol 404 EditableText | Uses:31 | Used by:Timeline |
Symbol 405 Text | Uses:31 | Used by:Timeline |
Symbol 406 Graphic | Used by:Timeline | |
Symbol 407 Text | Uses:31 | Used by:Timeline |
Symbol 408 Text | Uses:78 | Used by:Timeline |
Symbol 409 EditableText | Uses:31 | Used by:Timeline |
Symbol 410 Text | Uses:31 | Used by:Timeline |
Symbol 411 Text | Uses:31 | Used by:Timeline |
Symbol 412 Text | Uses:31 | Used by:Timeline |
Symbol 413 EditableText | Uses:31 | Used by:Timeline |
Symbol 414 EditableText | Uses:31 | Used by:Timeline |
Symbol 415 Text | Uses:31 | Used by:Timeline |
Symbol 416 EditableText | Uses:31 | Used by:Timeline |
Symbol 417 Text | Uses:31 | Used by:Timeline |
Symbol 418 Text | Uses:31 | Used by:Timeline |
Symbol 419 Text | Uses:31 | Used by:Timeline |
Symbol 420 Text | Uses:31 | Used by:Timeline |
Symbol 421 EditableText | Uses:31 | Used by:Timeline |
Symbol 422 Text | Uses:31 | Used by:Timeline |
Symbol 423 Bitmap | Used by:424 | |
Symbol 424 Graphic | Uses:423 | Used by:Timeline |
Symbol 425 Text | Uses:31 | Used by:Timeline |
Symbol 426 EditableText | Uses:31 | Used by:Timeline |
Symbol 427 Text | Uses:31 | Used by:Timeline |
Symbol 428 Text | Uses:31 | Used by:Timeline |
Symbol 429 Text | Uses:31 | Used by:431 |
Symbol 430 Graphic | Used by:431 | |
Symbol 431 Button | Uses:390 429 430 | Used by:Timeline |
Symbol 432 Text | Uses:31 | Used by:Timeline |
Symbol 433 Text | Uses:31 | Used by:435 Timeline |
Symbol 434 Graphic | Used by:435 437 439 441 448 450 455 457 464 466 468 | |
Symbol 435 Button | Uses:390 433 434 | Used by:Timeline |
Symbol 436 Text | Uses:31 | Used by:437 |
Symbol 437 Button | Uses:390 436 434 | Used by:Timeline |
Symbol 438 Text | Uses:31 | Used by:439 |
Symbol 439 Button | Uses:390 438 434 | Used by:Timeline |
Symbol 440 Text | Uses:31 | Used by:441 |
Symbol 441 Button | Uses:390 440 434 | Used by:Timeline |
Symbol 442 Text | Uses:31 | Used by:Timeline |
Symbol 443 Text | Uses:31 | Used by:Timeline |
Symbol 444 Text | Uses:31 | Used by:Timeline |
Symbol 445 Text | Uses:31 | Used by:Timeline |
Symbol 446 Graphic | Used by:448 | |
Symbol 447 Text | Uses:31 | Used by:448 |
Symbol 448 Button | Uses:446 447 434 | Used by:Timeline |
Symbol 449 Text | Uses:31 | Used by:450 |
Symbol 450 Button | Uses:390 449 434 | Used by:Timeline |
Symbol 451 Text | Uses:31 | Used by:Timeline |
Symbol 452 Text | Uses:31 | Used by:Timeline |
Symbol 453 Text | Uses:31 | Used by:Timeline |
Symbol 454 Text | Uses:31 | Used by:455 Timeline |
Symbol 455 Button | Uses:390 454 434 | Used by:Timeline |
Symbol 456 Text | Uses:31 | Used by:457 |
Symbol 457 Button | Uses:390 456 434 | Used by:Timeline |
Symbol 458 Text | Uses:31 | Used by:Timeline |
Symbol 459 Text | Uses:31 | Used by:Timeline |
Symbol 460 Text | Uses:31 | Used by:462 |
Symbol 461 Graphic | Used by:462 477 479 | |
Symbol 462 Button | Uses:390 460 461 | Used by:Timeline |
Symbol 463 Text | Uses:31 | Used by:464 |
Symbol 464 Button | Uses:390 463 434 | Used by:Timeline |
Symbol 465 Text | Uses:31 | Used by:466 |
Symbol 466 Button | Uses:390 465 434 | Used by:Timeline |
Symbol 467 Text | Uses:31 | Used by:468 |
Symbol 468 Button | Uses:390 467 434 | Used by:Timeline |
Symbol 469 Text | Uses:31 | Used by:Timeline |
Symbol 470 Text | Uses:31 | Used by:Timeline |
Symbol 471 Text | Uses:31 | Used by:Timeline |
Symbol 472 Text | Uses:31 | Used by:Timeline |
Symbol 473 Text | Uses:31 | Used by:Timeline |
Symbol 474 Text | Uses:31 | Used by:Timeline |
Symbol 475 Text | Uses:31 | Used by:Timeline |
Symbol 476 Text | Uses:31 | Used by:477 Timeline |
Symbol 477 Button | Uses:390 476 461 | Used by:Timeline |
Symbol 478 Text | Uses:31 | Used by:479 Timeline |
Symbol 479 Button | Uses:390 478 461 | Used by:Timeline |
Symbol 480 Text | Uses:31 | Used by:Timeline |
Symbol 481 Text | Uses:31 | Used by:Timeline |
Symbol 482 Text | Uses:31 | Used by:Timeline |
Symbol 483 Bitmap | Used by:484 | |
Symbol 484 Graphic | Uses:483 | Used by:Timeline |
Symbol 485 Text | Uses:78 | Used by:Timeline |
Symbol 486 Text | Uses:78 | Used by:Timeline |
Symbol 487 Bitmap | Used by:488 | |
Symbol 488 Graphic | Uses:487 | Used by:Timeline |
Symbol 489 Text | Uses:78 | Used by:Timeline |
Symbol 490 Text | Uses:78 | Used by:Timeline |
Symbol 491 Bitmap | Used by:492 | |
Symbol 492 Graphic | Uses:491 | Used by:Timeline |
Symbol 493 Text | Uses:78 | Used by:Timeline |
Symbol 494 Text | Uses:78 | Used by:Timeline |
Symbol 495 Text | Uses:78 | Used by:Timeline |
Symbol 496 Text | Uses:78 | Used by:Timeline |
Symbol 497 Bitmap | Used by:498 | |
Symbol 498 Graphic | Uses:497 | Used by:Timeline |
Symbol 499 Text | Uses:78 | Used by:Timeline |
Symbol 500 Text | Uses:78 | Used by:Timeline |
Symbol 501 Text | Uses:78 | Used by:Timeline |
Symbol 502 Bitmap | Used by:503 | |
Symbol 503 Graphic | Uses:502 | Used by:Timeline |
Symbol 504 Graphic | Used by:Timeline | |
Symbol 505 Font | Used by:506 512 518 520 522 527 530 532 534 536 541 543 549 558 561 563 569 577 579 586 | |
Symbol 506 Text | Uses:505 | Used by:Timeline |
Symbol 507 Font | Used by:508 514 519 521 523 524 533 535 538 542 544 546 547 548 550 553 554 555 | |
Symbol 508 Text | Uses:507 | Used by:Timeline |
Symbol 509 Button | Uses:157 | Used by:Timeline |
Symbol 510 Text | Uses:19 | Used by:511 |
Symbol 511 Button | Uses:510 | Used by:Timeline |
Symbol 512 Text | Uses:505 | Used by:Timeline |
Symbol 513 Font | Used by:514 519 521 523 524 529 531 535 544 546 547 548 553 554 555 556 560 562 565 581 582 | |
Symbol 514 Text | Uses:513 507 | Used by:Timeline |
Symbol 515 Graphic | Used by:516 | |
Symbol 516 Button | Uses:515 | Used by:Timeline |
Symbol 517 Graphic | Used by:Timeline | |
Symbol 518 Text | Uses:505 | Used by:Timeline |
Symbol 519 Text | Uses:507 513 | Used by:Timeline |
Symbol 520 Text | Uses:505 | Used by:Timeline |
Symbol 521 Text | Uses:507 513 | Used by:Timeline |
Symbol 522 Text | Uses:505 | Used by:Timeline |
Symbol 523 Text | Uses:507 513 78 | Used by:Timeline |
Symbol 524 Text | Uses:507 513 78 | Used by:Timeline |
Symbol 525 Bitmap | Used by:526 | |
Symbol 526 Graphic | Uses:525 | Used by:Timeline |
Symbol 527 Text | Uses:505 | Used by:Timeline |
Symbol 528 Font | Used by:529 533 542 | |
Symbol 529 Text | Uses:78 513 528 19 | Used by:Timeline |
Symbol 530 Text | Uses:505 | Used by:Timeline |
Symbol 531 Text | Uses:513 78 | Used by:Timeline |
Symbol 532 Text | Uses:505 | Used by:Timeline |
Symbol 533 Text | Uses:507 528 | Used by:Timeline |
Symbol 534 Text | Uses:505 | Used by:Timeline |
Symbol 535 Text | Uses:507 513 | Used by:Timeline |
Symbol 536 Text | Uses:505 | Used by:Timeline |
Symbol 537 Font | Used by:538 546 | |
Symbol 538 Text | Uses:507 537 | Used by:Timeline |
Symbol 539 Bitmap | Used by:540 | |
Symbol 540 Graphic | Uses:539 | Used by:Timeline |
Symbol 541 Text | Uses:505 | Used by:Timeline |
Symbol 542 Text | Uses:528 507 | Used by:Timeline |
Symbol 543 Text | Uses:505 | Used by:Timeline |
Symbol 544 Text | Uses:507 513 | Used by:Timeline |
Symbol 545 Font | Used by:546 | |
Symbol 546 Text | Uses:507 513 545 537 | Used by:Timeline |
Symbol 547 Text | Uses:507 513 | Used by:Timeline |
Symbol 548 Text | Uses:507 513 | Used by:Timeline |
Symbol 549 Text | Uses:505 | Used by:Timeline |
Symbol 550 Text | Uses:507 | Used by:Timeline |
Symbol 551 Bitmap | Used by:552 | |
Symbol 552 Graphic | Uses:551 | Used by:Timeline |
Symbol 553 Text | Uses:507 513 | Used by:Timeline |
Symbol 554 Text | Uses:507 513 | Used by:Timeline |
Symbol 555 Text | Uses:513 507 | Used by:Timeline |
Symbol 556 Text | Uses:513 78 | Used by:Timeline |
Symbol 557 Text | Uses:78 | Used by:Timeline |
Symbol 558 Text | Uses:505 | Used by:Timeline |
Symbol 559 Text | Uses:78 | Used by:Timeline |
Symbol 560 Text | Uses:513 78 | Used by:Timeline |
Symbol 561 Text | Uses:505 | Used by:Timeline |
Symbol 562 Text | Uses:78 513 | Used by:Timeline |
Symbol 563 Text | Uses:505 | Used by:Timeline |
Symbol 564 Text | Uses:78 | Used by:Timeline |
Symbol 565 Text | Uses:513 78 | Used by:Timeline |
Symbol 566 Text | Uses:78 | Used by:Timeline |
Symbol 567 Text | Uses:78 | Used by:Timeline |
Symbol 568 Text | Uses:78 | Used by:Timeline |
Symbol 569 Text | Uses:505 | Used by:Timeline |
Symbol 570 Graphic | Used by:Timeline | |
Symbol 571 Text | Uses:19 | Used by:Timeline |
Symbol 572 Text | Uses:19 | Used by:Timeline |
Symbol 573 Text | Uses:19 | Used by:Timeline |
Symbol 574 Text | Uses:78 | Used by:Timeline |
Symbol 575 Text | Uses:19 | Used by:Timeline |
Symbol 576 Text | Uses:19 | Used by:Timeline |
Symbol 577 Text | Uses:505 | Used by:Timeline |
Symbol 578 Text | Uses:78 | Used by:Timeline |
Symbol 579 Text | Uses:505 | Used by:Timeline |
Symbol 580 Font | Used by:581 | |
Symbol 581 Text | Uses:78 19 513 580 | Used by:Timeline |
Symbol 582 Text | Uses:19 78 513 | Used by:Timeline |
Symbol 583 Text | Uses:19 78 | Used by:Timeline |
Symbol 584 Bitmap | Used by:585 | |
Symbol 585 Graphic | Uses:584 | Used by:Timeline |
Symbol 586 Text | Uses:505 | Used by:Timeline |
Symbol 587 Text | Uses:78 | Used by:Timeline |
Instance Names
"f1" | Frame 5 | Symbol 44 MovieClip |
"f2" | Frame 5 | Symbol 44 MovieClip |
"men" | Frame 6 | Symbol 107 MovieClip |
"menutxt" | Frame 7 | Symbol 110 Button |
"ball" | Frame 44 | Symbol 299 MovieClip |
"ball" | Frame 64 | Symbol 299 MovieClip |
"foward" | Frame 100 | Symbol 509 Button |
"menutxt" | Frame 100 | Symbol 110 Button |
"men" | Frame 100 | Symbol 107 MovieClip |
"back" | Frame 101 | Symbol 516 Button |
"back" | Frame 122 | Symbol 516 Button |
"foward" | Frame 123 | Symbol 509 Button |
"bar" | Symbol 13 MovieClip Frame 1 | Symbol 3 MovieClip |
"hide" | Symbol 107 MovieClip Frame 1 | Symbol 101 Button |
Special Tags
FileAttributes (69) | Timeline Frame 1 | Access local files only, Metadata not present, AS1/AS2. |
ExportAssets (56) | Timeline Frame 3 | Symbol 22 as "ots" |
ExportAssets (56) | Timeline Frame 4 | Symbol 23 as "yay" |
Labels
"loaded" | Symbol 13 MovieClip Frame 3 |
|