STORY LOOP FURRY PORN GAMES C SERVICES [?] [R] RND POPULAR | Archived flashes: 229595 |
/disc/ · /res/ — /show/ · /fap/ · /gg/ · /swf/ | P0001 · P2595 · P5190 |
A Very Merry Christmas! |
This is the info page for Flash #71973 |
Object-oriented Platformer |
Starting out |
You probably noticed I am calling yet another function that I haven't yet defined. The function actionRouting() will serve the purpose of determining what action to take based on the key presses it sees coming across in that text variable. The reasons I am making all of these things separate functions is for organizational purposes. Most of the time, it is bad practice to put any single function in charge of many and varying tasks. Making your code like this increases the chances that you'll be able to utilize the function for more than just one particular purpose or in one particular area of processing. We have also jumped pretty deep into the code before actually creating anything for the code to act on. So, before getting to the actionRouting() function, we'll take a break and create and object we want to act upon. |
So let's get drawing and animating! |
modular |
modular |
The platforms themselves |
function myObject(clip,speed){ this.clip = clip; this.speed = speed; this.jumpspeed = 0; } |
Before we go any further with the actual setting and testing of the floors (I tend to get ahead of myself sometimes) we need to get a system of gravity down for the character. We'll add a global "gravity" value: var gravity = 2; This value will attempt to be added to the character's current vertical-speed value on each loop through moveObject(). We will also need another line added to the definition of myObject: The value jumpspeed will be the current vertical velocity (in pixels) of the character. |
Arrow-keys control character Click this mini-screen to reset |
Moving platforms |
And once again, a mini-game setup with some of the new coding we now have: Notice that the moving floor is just going all over the place, and you are even able to move on the floor to the left and right and the game just compensates without any trouble. That is because the delta, or change in X coordinate is added to character clip. That clip is not forced to adhere to an X coordinate relative to the floor at all. |
End |
So, hopefully this gives at least some ideas to people without an idea how to start into making a platformer game. And hopefully a few veterans got something out of it as well. If not... just leave me a review and berate me for propagating bad coding and design practices. I won't mind... really. Also as a last note... if you haven't tried the Nuke button... or the new Meteor-shower button (click the small gray button in the bottom-right corner of the Nuke button to toggle between these options) I would suggest doing so now. Especially if you did not like this tutorial. I'm looking to make subsequent tutorials in this vein, where I cover how to add some more impressive options, animations, and interactions into the base engine. Until then, take care. |
The End |
Dropping down |
And, as a really simple example of adding extra functionality, I could also add the ability to drop from platforms. We're already detecting the DOWN arrow key, so I'd just have to add a line to actionRouting that affects the player ever so slightly: if (pKey.indexOf("|4|") != -1) { activeCharacter.clip._y+=5; activeCharacter.surfaceType = ""; } How easy is that? Now, of course, not everything is going to be that easy. Obviously, if you want more animations and abilities, these functions change with each addition. And I am not even really handling some of these things in the most effecient way possible. For instance, the actions of walk, stand, and jump. In the actual engine I have built I also created an "action" object, which defines the frame that should be played and certain other parameters surrounding each action. I didn't get that detailed here in order to maintain some semblance of simplicity. And this tutorial is meant more as a building- block than as an end-all-beat-all platformer engine. |
Arrow-keys control character Space-bar jumps Click this mini-screen to reset |
function dresser(attachClip,x,y,numDrawers,color){ this.numDrawers = numDrawers; this.drawers = new Array(numDrawers); this.color = color; this.affectDrawer = function(){ } var nextY; for(var i=1; i<=numDrawers; i++){ attachClip.attachMovie("dresser_drawer","drawer_" + i,i); attachClip["drawer_" + i]._x = x; nextY = y - ((i-1) * attachClip["drawer_" + i]._height * (3/4)); attachClip["drawer_" + i]._y = nextY; } } function drawer(){ this.open = false; this.content = new Array(); this.contentIndex = 0; this.addContent = function(){ } } _root.myDresser = new dresser(_root,10,300,4,1); |
Jump around |
Click the gray-box below for code: |
if(dirX>0){ obj.clip.gotoAndStop("right"); } if(dirX !=0){ obj.clip.anim.gotoAndStop("walk"); }else{ obj.clip.anim.gotoAndStop("stand"); } if(obj.surfaceType == "" && obj.jumpspeed != 0){ obj.clip.anim.gotoAndStop("jump"); } if(obj.surfaceType!="moving"){ floorTest = testFloors(obj); if(floorTest == -1 || obj.jumpspeed<0) { obj.clip._y += obj.jumpspeed; |
Next is to change the moveObject function to set the "jump" frame when it detects that the character is not on a platform: That should do it actually. Oddly enough, once you have the solid base of coding for a game, the engine if you will, adding many little touches start to become fairly easy tasks. It just takes knowing the code and knowing where to add the parts you want to add. On the next screen will be our latest code and another mini game to try out the new jumping ability. |
function actionRouting(pKey){ var dirX = 0; if (pKey.indexOf("|1|") != -1) { dirX = 1; } if (pKey.indexOf("|2|") != -1) { dirX = -1; } if (pKey.indexOf("|5|") != -1) { if(activeCharacter.jumpspeed == 0 && activeCharacter.surfaceType != ""){ activeCharacter.surfaceType = ""; activeCharacter.jumpspeed = activeCharacter.jumpstart; } } moveObject(activeCharacter,dirX,1); } |
The above takes the key-press coming out of detectKeys() and checks to make sure that the character is standing on a platform of some sort, making sure that it would be physically possible for him to jump. Then, it tells the system that the character is no longer on a platform, and sets the character's jumpspeed equal to the value we set in jumpstart. This will make the clip jump up. |
this.clip = clip; this.speed = speed; this.face = 0; this.jumpspeed = 0; this.surfaceType = ""; this.surface = null; this.surfaceDelta = 0; this.jumpstart = -10; } |
We'll use this jumpstart value to initialize a jump each time the space-bar is pressed, and our character isn't already jumping. Now to change actionRouting(). |
Now we have the animation setup, we need to alter the code to detect a key-press that will cause the jump, and we need a bit of coding to make the jump happen based on that key press. We'll use the space-bar. Below, a line added to the detectKeys() function: if (Key.isDown(Key.SPACE)) { pkey += "|5|"; } And we also need to add a property to our myObject() class definition: |
Okay, time to add jumping. First, I need a graphic that represents the character in a jump action: My jump frame is just a static graphic, but you could use an animation, or even do something like use the jumpspeed variable values inside frame labels, and make the character animate slightly from jump value to jump value, and fall value to fall value. Anybody remember tomb-raider and what happened if she fell an exceptionally long way? You could do the same sort of thing here, having him scream and panic if his jumpspeed became some large value indicating that he was falling very fast, and had therefore been falling for a while. However, I'll just add this jump frame to the stickMan movie clip and give it a corresponding frame label. |
stand |
walk |
jump |
frame labels |
Once again, I haven't showed you how to add a moving floor. You could place the moving floor by hand on the stage, then call addMovingFloor() to point at it. but I'm going to make a function that attaches the movie to the stage, and registers it with the system all in one swipe. Whenever you have the chance to produce greater automation with something, I say go for it! Here's the function: |
function easyAddMovingFloor(tClip,eName,y,x,numFloors){ var mDex = movingFloorDex + 1; // The above is to set into the instance name of the floor, the actual index that that floor is in the // movingFloors array. This may come in handy down the line. tClip.attachMovie(eName,eName + mDex,gameHeight/sectionSize*100 + mDex); // Attach to whatever movie was passed as "tClip" (this is much like the addFloor() function) a // movie with the export name or linkage identifier passed, and make sure that its depth falls // outside the allotment for the regular floors (number of sections multiplied by 100) tClip[eName + mDex]._x = x; tClip[eName + mDex]._y = y; // Place the newly added clip at the right X and Y coordinates on-screen. addMovingFloor(tClip[eName + mDex],numFloors); // Register this clip as having moving floors to the system. } |
I am going to use my "scifi_floor" to make a moving-floor clip. First, I drag a copy to the stage and choose "Modify -> Covert to Symbol" naming the new clip "moving_scifi_floor". I have applied an Instance name to "scifi_floor" of "floor1". I make a guide-layer, drawing my motion-guiding line as a sort of sine-curve, halved circles, flipped every other one. I then tween the clip along the line, one time forward, and one back. I also added "ease" effects to my animation, to make it look like it speeds up when taking off from the ends, then slows down as it approaches them. Really, any animation within Flash will work. Note that any added animated floors would within this same clip would need named "floor2", etc. |
function testMovingFloors(obj){ var compY,thisClip,fixY,i,j,thisFloor; if(movingFloorDex>0){ // If there are even moving floors to test compY = obj.clip._y; // Variable holding the Y coordinate of the character clip for(var j=0; j<movingFloorDex; j++){ // Walk through each moving floor instance thisFloor = movingFloorSet[j]; // Variable holds current floor being tested for(var i=1; i<=thisFloor.numInClip; i++){ // Walk through each floor in the setup clip thisClip = thisFloor.clip["floor" + i]; // Variable holds current clip within the floor movie that is being tested fixY = thisFloor.clip._y + thisClip._y; // Use relative coordinates of floor clip in movie to determine global game coordinates if(fixY>=compY && fixY<=compY + obj.jumpspeed){ // If current placement of floor falls between where character is and where he is going if(testMovingFloorHorizontals(obj,thisClip)){ // See below function that tests whether the characters corners lie on the moving clip obj.surface = thisClip; // Set objects surface property to the current movine INSIDE the animating clip. obj.surfaceType = "moving"; // Tell the system that the floor in the property surface is a moving floor type obj.surfaceDelta = thisClip._x; // Record what the current X value of the clip is in the object's delta property return fixY + thisClip._y; // Return from the function with the global Y value of the current moving floor // this only happens in the case that the character should hit the floor, because // he meets both the vertical and horizontal hitting tests. } } } } } return -1; // Return that no floor was found - keep falling. } function testMovingFloorHorizontals(obj,floorObj){ var c1 = obj.clip._x - obj.clip._width; // Left-corner (smaller) X value of the character var c2 = obj.clip._x; // Right-corner (larger) X value of the character (remember the registration-point?) var fixX = floorObj._parent._x + floorObj._x; // Global left-hand X value of the moving floor clip, calculated using local X values var fixX2 = fixX + floorObj._width; // Global right-hand X value of the moving floor clip, calculated using the width of the clip if(fixX>=c1 && fixX<=c2 || fixX2>=c1 && fixX2<=c2 || c1>=fixX && c1<=fixX2 || c2>=fixX && c2<=fixX2){ // If corners of floor are between characters width, or character's corners between floor width return true; // Return that horizontal hit of the floor has happened! }else{ return false; // Return that horizontal hit of the floor has NOT happened } } |
Below are two functions that will test moving floors, again code is thoroughly commented. Note that the code explicitly uses the word "floor" and concatenates a numeric on it that corresponds to the number floor in order to refer to the clip we want to test. This "floor" is part of an instance name on the clips that I will clue you into when I show you how to make a moving floor clip. Which is next... |
for(var i=0; i<floorSect[j].floorDex; i++){ aFloor = floorSect[j].floorArr[i]; if(aFloor.y>=charY1 && aFloor.y<=charY2){ if(charX1>=aFloor.x1 && charX1<=aFloor.x2 || charX2>=aFloor.x1 && charX2<=aFloor.x2){ obj.surface = aFloor; obj.surfaceType = "static"; return aFloor.y; } } } |
The below is only to give you context as to where the change takes place within testFloors(): Ths will now give us a solid base of conditions to work with when determining what type of floor our character is standing on, and we can make judgments as to the kinds of tests we need to complete or not complete so that we can keep our processor-usage slimmed-down, and hopefully avoid the on-set of lag in our game. Which hopefully allows us to use up the remaining processor-time available to utilize decent graphical content. |
function myObject(clip,speed){ this.clip = clip; this.speed = speed; this.face = 0; this.jumpspeed = 0; this.surfaceType = ""; this.surface = null; this.surfaceDelta = 0; } This means that we should change our original testFloors() routine to change the surfaceType of our object being processed to something that means he is standing on a static floor. This determination of what type of floor he is standing on will help to optimize the testing and processing needing done within our game loop. |
// This will tell us what type of platform our character is on // This will hold a reference to the actual platform // This will hold the amount of X-coordinate change the character // should experience. the Y will be handled by the surface itself |
This is the function that will add moving-floors to the array we set up: function addMovingFloor(clip,numInClip){ movingFloorSet[movingFloorDex] = new movingFloor(clip,numInClip); movingFloorDex += 1; } Also in order to do this, we need to establish some new coding for our object class. It needs to be able to track what type of platform it is on, and to be able to tell how much the platform it is on has moved in order to be "carried" by the platform. Otherwise, the platform will move right out from under the player! Which is not what we want at this point. On the next screen we'll see the new variables added to the myObject() class that will help us do all of this. |
We also need a function, of course, the object that is gong to represent the moving floor: function movingFloor(clip,numInClip){ this.clip = clip; this.numInClip = numInClip; } The two parameters passed to initialize the object are the clip reference, which will point to the animating movie-clip on stage that has the floors in it, and the number of floors in that movi-clip. I'm going to set it up so that I can test any numbr of animating floors all at once within any given movie- clip. You could then, for instance, create a rotating wheel with 4 platforms on it, each of which is rotating with the wheel, and all are contained in the same movie and animation. Otherwise, it would be a pain to have to try and synch-up 4 separate movie-clips. |
Let's establish the array that will be used to hold these "moving" floors: var movingFloorSet = new Array(); var movingFloorDex = 0; This will work a lot like the regular floor section holder array, except that each entry in this array will be just a referfence to the floor to be tested. The way a moving floor will work is that there will be a movie-clip, inside of which is an animation. On some layer of this animation will be a "floor", an invisible movie-clip that we will give an instance name to that is easily scriptable and identifiable. This floor can dance all around the movie-clip, no matter what the rest of the clip-contents are doing, and the test function will simply pay attention only to the activities of the floor clips and their current positions. |
I used that new easyAddFloor() function on that last screen to make those controls add floors to the game on the fly. It added them so that, not only does it notify the player by the visual that a platform exists there, the game, of course, picks up on that fact as well and makes the player react to that platform accordingly. Next we're going to look at what it takes to create a moving-floor for the character to interact with. Right now, our floor-processing relies on the floors being placed into a static position, within a specific section of the screen. We don't want to have to de-register and re-register our floors as they move around, putting them first into one section, then taking them out as they move out of that section, and place them into a new one. That would just be a ridiculous amount of work.. Instead, we're going to make a special function to process moving floors, and they will get their own array. In this game, moving-floors will all be processed always, because we never know where they are going to be in relation to the player until we need to find out. |
Here is a bit of a fun screen, using all of the coding up to now and a few controls: |
Use these to pick a floor type |
Use this to select an x,y coordinate set for the floor |
Click this button to add the floor |
Here is a function that is going to do what I described, with thorough comments to describe what each piece is doing: |
function easyAddFloor(tClip,eName,y,x){ // The 4 parameters being passed: // tClip - the clip to which the movie of the floor should be attached // eName - the export name of the floor we want attached from our library of symbols. // y - the Y coordinate of the floor, and where to place the attached clip // x - the X coordinate at which to place the attached clip, the width then determines our x2 var setDex = Math.floor(y/sectionSize); // Get the index to the floor section where the floor we are adding will fall var floorInSet = floorSet[setDex].floorDex; // Get the index inside the section chosen that determines the number of floor this is in the set tClip.attachMovie(eName,"floor_" + setDex + "_" + floorInSet,setDex*100 + floorInSet); // The above line attaches the new movie-clip from the symbol in the library. The 3 parameters // being passed to the attachmovie() method are: // 1. The export name or linkage identifier of the clip // 2. A name that will be unique to this clip, I chose to concatenate to the word "floor", both the // section index, and number of floor this floor is in that section. Which is a unique combo. // 3. The depth at which the clip should be sorted. This I set to a muitiple of the index plus the // number floor. This number also needs to be unique. Attaching a clip with either the same // instance name OR depth value results in the original clip being deleted. What I have // done with this number is make sure that i can insert up to 100 floors in each section // before one section might overflow into the numbers of the next. tClip["floor_" + setDex + "_" + floorInSet]._y = y; tClip["floor_" + setDex + "_" + floorInSet]._x = x; // The above lines set the x and y values of the newly attached clip. floorSet[Math.floor(setDex)].addFloor(y,x,x+tClip["floor_" + setDex + "_" + floorInSet]._width); // This last line finallly registers this new clip and its coordinates as a new floor object that should // be processed in our game. note the use of the width added to the X coordinate to determine the // parameter "x2" that gets passed to the addFloor() method. } |
To assign an export name or "linkage identifier" (which is a fancy title for a movie-clip that can be attached to the Flash stage dynamically at run-time) find the clip you want to assign a name to in the Library dialogue (Window -> library, or "F11"). Right-click the clip and select "properties" from the resulting menu. If all you see are choices for "Name" and "Behavior" and a few buttons, click the button labeled "Advanced". The box you want to type the export name into is the first in the section labeled "Linkage", and the box itself is labeled "Identifier": I named the tan floor drawn with vector graphic toools "vector_floor". The one with stalactites hanging from it is "cave_floor". And the flying one I named "scifi_floor". |
t |
ty |
typ |
type |
type n |
type na |
type nam |
type name |
type name h |
type name he |
type name her |
type name here |
Below we have a couple different movie-clips we could use for floors: They range from plain, to detailed, to animated. They are movie-clips, and so can contain anything that Flash can dish out. Vector graphics, bitmaps, animation of any kind... even video! What we're going to do with these is tell Flash which movie to attach to the stage and where, and what it should do to turn it into a floor within our game. If it sounds complicated... its not. But one of the main components of being able to do this is something you may or may not be familiar with. That is, setting an export or "linkage identifier" name for the clips. |
... let's re-cap what we've done so far. We've done a lot of coding and setup: 1. Setup the movie-clip representation of our character, and placed it into a standard object class 2. Created functions that address the keys, and acquire which are pressed 3. Created a function to interpret the keys as directions to give to a function that processes moves 4. Established global gravity variable that affects the character 5. Created a system with which to setup and test floors simply and quickly That about sums it up. though there is a lot of material in those 4 steps that we have covered. And now... on with the show! |
To define floors (at this point): floorSet[Math.floor(80/sectionSize)].addFloor(80,16,116); floorSet[Math.floor(190/sectionSize)].addFloor(190,0,320); This is currently a lousy way to do it, but I haven't provided for any easier way of communicating the need for a floor to the functions responsible yet. As you can see, I had to specify the Y-coordinate of the floor twice... once to determine the index of the section to add it to, and once to actuallly pass to the addFloor() method. This should only need passed once, to one function that takes care of both. We're also going to see what it will take to get custom floor movie-clips to attach themselves to the game-screen and generate floor objects that represent the graphics. But first... |
Try a few floors in this mini-game. We haven't yet given the character the abiltiy to jump, so all he can do is fall at this point: |
If you've been paying attention, you'd be wondering right now what it was that I left out. In this little mini-game, we've got two floors defined... but I never showed you how to do so! On the next screen we'll get this part and the most up-to-date coding. |
And for the changes to moveObject(), we need to add the test, and what to do in the case that a floor coordinate does come back to us. |
function moveObject(obj, dirX, dirY){ obj.clip._x += dirX * obj.speed; if(dirX<0){ obj.clip.gotoAndStop("left"); } if(dirX>0){ obj.clip.gotoAndStop("right"); } if(dirX !=0){ obj.clip.anim.gotoAndStop("walk"); }else{ obj.clip.anim.gotoAndStop("stand"); } floorTest = testFloors(obj); // Test for floors before moving in Y direction if (floorTest == -1 || obj.jumpspeed<0) { // If no floor found (-1) or character is going up obj.clip._y += obj.jumpspeed; obj.jumpspeed += gravity; }else{ obj.clip._y = floorTest; // If a floor WAS found then character should be placed on it. obj.jumpspeed = 0; // If you have landed on a platform, your falling speed should be reset } } |
Below is the function we'll be using to test the floors. The code is thoroughly commented since this is the largest chunk of code I have thrown at you so far. On the next screen we'll see where and how to implement this function within our moveObject() routine. |
function testFloors(obj){ var aFloor; var charY1 = obj.clip._y; var charY2 = obj.clip._y + obj.jumpspeed; // The above 2 Y values represent where the character is, and where he will be on the next cycle // of moveObject() due to falling. var charX1 = obj.clip._x - obj.clip._width; var charX2 = obj.clip._x; // The above 2 X values represent the character's bottom-left and bottom-right x-coordinates. var dex1 = Math.floor(charY1/sectionSize); var dex2 = Math.floor(charY2/sectionSize); // The above two indexes use our formula to determine the start and end indexes that should be // tested between to determine if a floor appears in the character's current fall. var floorSect = new Array((dex2-dex1) + 1); // This line creates an array to hold the section-array objects from dex1 to dex2 for(var j=0; j<floorSect.length; j++){ // Looping through all section-array objects in the array floorSect[j] = floorSet[dex1+j]; // place the dex1, etc. array-object into the new Array if(floorSect[j].floorDex>0){ // If current section object has 1 or more floors in it for(var i=0; i<floorSect[j].floorDex; i++){ // Looping through all floors in the current section object aFloor = floorSect[j].floorArr[i]; // Get the current floor object if(aFloor.y>=charY1 && aFloor.y<=charY2){ // If floor falls between the chracter's current position and fall position. if(charX1>=aFloor.x1 && charX1<=aFloor.x2 || charX2>=aFloor.x1 && charX2<=aFloor.x2){ // If either of the characters corners lie on the platform's x-span return aFloor.y; // Return the y-coordinate of the floor the character should hit! } } } } } return -1; // Return that no floor was found, keep falling... } |
And the moveObject function needs to change as well: function moveObject(obj, dirX, dirY){ obj.clip._x += dirX * obj.speed; if(dirX<0){ obj.clip.gotoAndStop("left"); } if(dirX>0){ obj.clip.gotoAndStop("right"); } if(dirX !=0){ obj.clip.anim.gotoAndStop("walk"); }else{ obj.clip.anim.gotoAndStop("stand"); } obj.clip._y += obj.jumpspeed; obj.jumpspeed += gravity; } |
Currently, this code will just make the character fall like a lead balloon. All I wanted to do here was introduce the concept of this new variable, jumpspeed. |
To obtain which section in the array of sections a given Y coordinate falls we'll use this formula: sectionIndex = Math.floor(Y/sectionSize); For instance, if you are in the first section (y=0 to y=20) the index returned should be 0 (zero - the first element of the array). The Math.floor() function takes us down from our fraction result to the next lower integer: 1/20 = 0.05 Math.floor(1/10) = 0 5/20 = 0.25 Math.floor(5/10) = 0 |
So, at any given moment we can plug the Y value of our character clip (remember the registration point is at his feet, in the bottom-right corner of the clip) into this formula and determine which section of the screen we should be testing the floors of. And to span several sections, we need to know what start and end section to test through. This is what we will build into our testing function. |
cycle - n |
cycle - n+1 |
cycle - n+2 |
miss! |
One thing we need to keep in mind is that our character may be falling past entire sections if gravity builds up enough, and if we don't put some sort of governance on the maximum rate at which he can fall. A sort of terminal velocity, if you will. For instance, let's say we use the value of 2 to increase the falling speed of any given object on each code cycle. In 10 cycles we will have hit our sectionSize (20), and the character will start falling past entire sections without ever having a Y value that falls WITHIN that section. Which means we can't simply test the section he is in. We may have to test several, depending on how fast he is falling. In the figure to the right, where the character's feet appear is where the test would occur. You can see how he misses the second to last section of pixels entirely. |
Here is the floor Section object and the method to add a floor to a given section: function addFloor(y,x1,x2{ this.floorArr[this.floorDex] = new floor(y,x1,x2); this.floorDex ++; } function floorSection(){ this.floorArr = new Array(); this.floorDex = 0; this.addFloor = addFloor; } |
// An array to hold each of the floors that appear in the section // Index to the array which is incremented with each added floor // A reference to the addFloor method which will be contained // in the object definition of each section created. |
// Because this function will be a member of the // section object, we use "this" to refer to the // section doing the calling to this function. |
With the beginnings of the objects nailed down, we need the code to test against them and make judgments as to when our character should/shouldn't fall. |
Actually, the main array is going to contain objects that will then each contain an array that willl hold the floors present in the segment. In this way, we can have methods applied to the segment-holder objects that will allow us to easily add a floor to the segment-holder itself. What we'll use to determine the size of the array is the size of the stage or game-background we're working with. In my case, I'm going to be using that background graphic you saw as my test game size. So, the size of that is 320 X 200. And I am going to use a sectionSize of 20, though I am going to set it up so that I can change this if I want to going forward: var sectionSize = 20; var gameWidth = 320; var gameHeight = 200; |
// Will define how large a section is in pixels // Will help define how many X sections there are in total // Will help define how many Y sections there are in total |
A reason I might change that sectionSize going forward is by lowering sectionSize it should decrease the number of floors tested per section. Which may help lag. |
What I am going to do is effectively cut the screen up into smaller sections that can be tested more quickly and easily by the system. See the below example-screen, the lines represent the sections: |
20 |
40 |
60 |
80 |
100 |
120 |
140 |
160 |
180 |
This screen is sliced into sections of 20 pixels. You can see that platforms fall between segments from 60 to 80 pixels and from 100 to 120. What I am going to setup will hold all of the floors within a given segment as an array within an array of all of the segments. |
Enough soap-box... on with the coding! What I am going to setup is the structure through which floors or platforms in the game will be created and tested for during gameplay. This means we'll also be establishing gravity for our little stick-man, so that he can fall through the air, and cause a need for us to see if he has fallen onto or hit anything that should stop him. We need a floor object: function floor(y,x1,x2){ this.y = y; this.x1 = x1; this.x2 = x2; } |
While the floor object itself is pretty rudimentary, the code that is going to setup the structure through which I am going to test for floors as the character falls is going to be where the real meat of this part of the project resides. In this object, a floor has a y-coordinate, a starting x coordinate and an ending x coordinate. So, a floor rests at y from x1 to x2. |
Next we look at how I am going to keep from having to test every single floor for action on every single loop pass. This step is also known as optimization. |
Movement re-defined |
Try it (Instance of "stickMan_Facings" with instance name "stickMan1"): You're probably wondering why I keep changing the code, and why I just don't get it right the first time and show you... the problem with that is that the design of code is an evolutionary process. It isn't something you just do and it's right and it works. It is an iterative process in which you experience failure after failure, and also success after success. I am slowly evolving the code to the end product to try and keep you "in-the-know" throughout the whole process... rather than just dump all on you to figure out. |
Click for code |
Changes to the code: function moveObject(obj, dirX, dirY){ obj.clip._x += dirX * obj.speed; if(dirX>0){ obj.clip.gotoAndStop("right"); obj.face=0; } if(dirX<0){ obj.clip.gotoAndStop("left"); obj.face=1; } if(dirX !=0){ obj.clip.anim.gotoAndStop("walk"); }else{ obj.clip.anim.gotoAndStop("stand"); } } Note the new variable in the dot-notation syntax for coordinating which frame (walk or stand) to play to. anim is the instance name I chose to give to the movie "stickMan" inside the movie "stickMan_Facings". I gave this name to BOTH the right and left frames. So, no matter which direction the stick-man is facing, the correct reference to his "stickMan" movie clip is obj.clip.anim. On the next screen we'll try this out and get the most up-to- date, full code to copy from. |
Last thing before we start experimenting in the realm of platforms is to get this guy facing the right way. So, we will convert the "stickMan" clip into yet another movie-clip named "stickMan_Facings": |
Actions are simply the command stop() at this point. |
Frame label: right Frame content: stickMan (original) |
Frame label: left Frame content: stickMan (flipped horizontally) |
And we're also going to add the property face to our myObject: function myObject(clip,speed){ this.clip = clip; this.speed = speed; this.face = 0; } |
Try it out: Note that he works exactly the same, even with the changes to the code. But also note that the code is much more robust, and much more portable. We'll now be able to alter moveObject() and be confident that it will work when pointed at objects besides the main character clip. Note also that I have hard-coded a "1" in actionRouting() as the parameter dirY that is passed to moveObject(). This is because, in this game, we will always want the Y direction to be processed as positive, or downward, with respect to gravity. You could very well have actionRouting() detect the up and down arrow-keys, and move the clip accordingly by passing either positive or negative values as dirY. This would allow for 4-directional movement. You could even detect whether BOTH the down and right arrow-keys were pressed and pass positive numbers in BOTH parameters, causing diagonal movement. You start to see how versatile this code is. |
function actionRouting(pKey){ var dirX = 0; if (pKey.indexOf("|1|") != -1) { dirX = 1; } if (pKey.indexOf("|2|") != -1) { dirX = -1; } moveObject(activeCharacter,dirX,1); } function moveObject(obj, dirX, dirY){ obj.clip._x += dirX * obj.speed; if(dirX !=0){ obj.clip.gotoAndStop("walk"); }else{ obj.clip.gotoAndStop("stand"); } } Note that the movement has been condensed to one line affecting the _x property of the clip. This is due to the fact that information about the direction is now being passed to moveObject() in the form of a positive or negative number. |
function moveObject(obj, dirX, dirY){ } The above is only a start, defining what it is we'll need to pass to the function: obj - the object we want the function to run its processes on. dirX - this will let us know what direction the object is headed in horizontally. dirY - this will let us know what direction the object is headed in vertically. That's all this function needs to get moving. now I'm going to farm some of that coding that is currently stuck smack-dab in the middle of actionRouting() off to this function, and have actionRouting() simply call this function up, passing the main character as the object to be processed. |
Let's get object-oriented |
I'd say it's coming along. But unfortunately, the code we've just written is crap. "But it works, right?" Yes, but it is not what is going to help us keep these functions organized, and allow the greatest re- useability. So, I'm going to create a function that handles the changing of action/pose of the character for us, as well as take care of incrementing or decrementing the _x property of the clip, so that actionRouting() isn't the only place that such events can occur. Remember, actionRouting() is reserved for reacting to key-press events, which only come from the user trying to control the main character. But later we want to be able to control multiple objects all in the same way. objects like enemies, boxes, balls... almost anything the character can come in contact with. I'm going to name this new function moveObject(). Again, a generic name, because this guy is going to be the work-horse of our coding, and its not going to matter what object we pass him... he'll always do his job regardless. So let's get to changing! |
Now we'll alter the actionRouting() function to pick up on whether or not the clip should play the walk frame (frame 2) or the stand frame (frame 1) of our new movie-clip: function actionRouting(pKey){ walk = false; if (pKey.indexOf("|1|") != -1) { activeCharacter.clip._x += activeCharacter.speed; walk=true; } if (pKey.indexOf("|2|") != -1) { activeCharacter.clip._x -= activeCharacter.speed; walk=true; } if(walk){ activeCharacter.clip.gotoAndStop("walk"); }else{ activeCharacter.clip.gotoAndStop("stand"); } } |
Try it with the left/right arrow keys! |
Below is the timeline of the stickMan movie-clip: |
Frame label: stand Frame content: stickMan_stand |
Frame label: walk Frame content: stickMan_walk |
stickMan_stand |
stickMan_walk |
Both now part of the same clip! |
Next we're going to change our object and movie-clip so that we can achieve the character either walking OR standing still. We'll first convert the clip into another clip. one frame willl be the "walk" frame, and one will be the "stand" frame: |
stickMan |
Note the registration point this will come in handy when platforms come into play. |
Clip looks the same, its just the walk clip inside another clip at this point. Now to add the stand frame. |
The only other coding used on that page was to define the two objects and set the activeCharacter: var stickObj1 = new myObject(stickMan1,3); var stickObj2 = new myObject(stickMan2,6); var activeCharacter = stickObj1; And the code on the buttons to activate the corresponding character object: Button 1: on(release){ activeCharacter = stickObj1; } Button 2: on(release){ activeCharacter = stickObj2; } See how easy that became? And all because we inserted references to our objects/movies rather than the instance names. How cool is that? |
hard-coding |
hard-coding |
Note that I dropped the stickMan object into a variable named activeCharacter. This will be a global variable that will be the only one that can receive key events at any one time (changes in purple): function actionRouting(pKey){ if (pKey.indexOf("|1|") != -1) { activeCharacter.clip._x += activeCharacter.speed; } if (pKey.indexOf("|2|") != -1) { activeCharacter.clip._x -= activeCharacter.speed; } } This may not seem like much of a change, but now, if I wanted to, I could have two separate character movie-clips on screen and switch control between the two of them: Try the buttons labeled "ACTIVATE", to switch control with the arrow keys between these two stick-men. |
stickMan1 speed: 3 |
stickMan2 speed: 6 |
ACTIVATE! |
I'm now going to start fleshing out some code that will allow us to define the character as an object. Notice I simply named this object/function myObject. I named it generically, because my plan is to utilize this same function to define many different objects in the game: function myObject(clip,speed){ this.clip = clip; this.speed = speed; } The above object is very simple, but it is going to make our actionRouting() much more flexible, and be able to act on any object, associated with any clip. To define the stickMan in our previous example using this object: var activeCharacter = new myObject(stickMan,3); Let's now change actionRouting() with this in mind. |
Below is the instance of the "stickMan" that can be controlled by the arrow keys. Note that there are currently no constraints on his movement. He can walk completely off screen. He also constantly animates. There is nothing to control the animation to make him stand still or take other action. He also pulls off a mean moon-walk. Try the left/right arrows keys: |
Click above to open code-window |
He moves 3 pixels per executed frame event. That's the "+/-=3" parts of the code. We'll call this speed. This value is an attribute of the stick-man that lends itself very well to object coding. |
s |
st |
sti |
stic |
stick |
stickM |
stickMa |
stickMan |
I'm not going to worry about the direction my character faces yer. He'll always just face right no matter which direction the keys take him. We also need to give the stick-man an instance name. Find the box to do this by clicking any movie-clip on the stage and looking in the "Properties" dialogue box for the input box containing the default text "<instance name>". I chose "stickMan" as the instance name. Here is the code I will place inside the "actionRouting" function which currently simply references the "stickMan" movie clip: function actionRouting(pKey){ if (pKey.indexOf("|1|") != -1) { stickMan._x += 3; } if (pKey.indexOf("|2|") != -1) { stickMan._x -= 3; } } |
// If pKey contains "|1|" then move right // If pKey contains "|2|" then move left |
On the next screen I have provided a demonstration of the code at work, plus all of the code up to this point in a copy-able format. |
I, personally, am not the strongest (nor the weakest) at drawing and animating. Below is something I threw together for this tutorial. It is a frame-by-frame animation of a stick-man walking: |
You can utilize any animation you want to, but this is going to be the one I use to start with for moving around screen with the keys. |
= |
By the way, this Flash tutorial is set at 24 . In the animation, each of the above drawings occurs every 3 frames to slow it down a bit. |
On the next screen I am going to lay out some code that will quickly translate key strokes into movement of a clip such as the animation displayed above. |
FPS |
FPS |
This empty movie clip is going to be the house where we build the entire coding of our game. First we're going code something simple into this function detectKeys() and then we'll build on that: function detectKeys(){ var pkey = ""; if (Key.isDown(Key.RIGHT)) { pkey += "|1|"; } if (Key.isDown(Key.LEFT)) { pkey += "|2|"; } if (Key.isDown(Key.UP)) { pkey += "|3|"; } if (Key.isDown(Key.DOWN)) { pkey += "|4|"; } actionRouting(pkey); } |
// If right-arrow pressed, add "|1|" to var "pKey" // If left-arrow pressed, add "|2|" to var "pKey" // If up-arrow pressed, add "|3|" to var "pKey" // If down-arrow pressed, add "|4|" to var "pKey" // Call a function that will process "pKey" |
This method of representing key-presses with text wrapped in the pipe-symbol may seem odd to some. You will soon see that it is a simple method of determining whether or not a key (or multiple keys) are being pressed. |
Nearly every game you've ever played runs based on one consistent looping of code that checks for changes to variables and makes adjustments based on those changes. So first, we need to setup this loop. In Flash, one of the easiest ways to accomplish this looping is by adding a function call to the " " event coding of a "controller" movie clip. Jumping right in... create an empty movie-clip using "Insert -> Symbol" (I named mine "game") and place it on-stage at (0,0), within it, add a layer named "Actions". In its single keyframe add the following actions to it using the keyword: this.onEnterFrame = function() { detectKeys(); } |
Click + F9 |
this |
this |
onEnterFrame |
onEnterFrame |
Intro |
This tutorial is going to give you a taste of how I program these types of games, not how they should be programmed. There probably isn't one "best" way to program them anyway, so hopefully, my sharing will teach some newcomers how to do it at all, and others who currently have experience some different ways of looking at things. The method I will share here is versatile, and allows for a ton of customization in many different ways. For some examples, take a look at my game "Bushy's Cleanup Crusade" in which many of the things you interact with are platforms of some sort or another. For instance, the plants that the character can grow and control each have platforms associated with them. The water is a different kind of platform in the game that causes the character to "drown". |
The functionalized processing of platforms against specifically programmed in-game objects can make adding specialized processing of those objects a breeze. |
Press the play ( ) button to start. |
Progress indicator |
Scroll-controller (Watch out for these throughout the tutorial) |
Note-taking box (Will retain text throughout tutorial) |
Mouse-over blue texts in white boxes throughout the tutorial to see definitions on this screen. |
Forward |
Backward |
Nuke (?) |
Loading... |
Loaded. |
Take notes (if you so wish) here... |
ActionScript [AS1/AS2]
Frame 1var percentLoad = Math.floor((_root.getBytesLoaded() / _root.getBytesTotal()) * 100); if (percentLoad != 100) { preloadBar.gotoAndStop(percentLoad); } else { gotoAndStop ("loaded"); }Frame 2gotoAndPlay (1);Frame 3gotoAndPlay (4);Frame 4function moviePlayer(movieName, frameToPlay) { this[movieName].gotoAndPlay(frameToPlay); } function screenContent(contentToPlay) { var _local2 = contentToPlay; var _local3 = screen_mover.screen.display; _local3.html = true; var _local1 = ""; switch (_local2) { case "this" : _local1 = ("<b>" + _local2) + "</b> - A keyword that automatically references the current object being acted on."; break; case "onEnterFrame" : _local1 = ("<b>" + _local2) + "</b> - An event that triggers once per frame according to the FPS of the Flash movie."; break; case "modular" : _local1 = ("<b>" + _local2) + "</b> - Comprised of sub-parts that define the whole, each of which operates in a specific mode."; break; case "FPS" : _local1 = ("<b>" + _local2) + "</b> - Acronym for \"Frames Per Second\"."; break; case "boolean" : _local1 = ("<b>" + _local2) + "</b> - A simple data-type containing either the logical value 'true' or 'false'."; break; case "hard-coding" : _local1 = ("<b>" + _local2) + "</b> - Referring to code in which the value(s) in question is not a parameter, but rather exists within the code itself."; break; default : _local1 = "fail."; } _local3.htmlText = _local1; } function withinBox(testCoordX, testCoordY, x1, y1, x2, y2) { if ((((testCoordX >= x1) && (testCoordX <= x2)) && (testCoordY >= y1)) && (testCoordY <= y2)) { return(true); } return(false); } function between(testCoord, c1, c2) { if (((testCoord - 0) >= (c1 - 0)) && ((testCoord - 0) <= (c2 - 0))) { return(true); } return(false); } function percentOverlap(sub1, sub2, sup1, sup2) { var _local1 = sub2; var _local2 = sub1; var _local3 = sup2; var sublength = (_local1 - _local2); var suplength = (_local3 - sup1); if (sublength < suplength) { if ((_local2 <= sup1) && (_local1 >= sup1)) { return((_local1 - sup1) / sublength); } if ((_local2 <= _local3) && (_local1 >= _local3)) { return((_local3 - _local2) / sublength); } if ((_local2 >= sup1) && (_local1 <= _local3)) { return(1); } } else { if ((sup1 <= _local2) && (_local3 >= _local2)) { return((_local3 - _local2) / suplength); } if ((sup1 <= _local1) && (_local3 >= _local1)) { return((_local1 - sup1) / suplength); } if ((sup1 >= _local2) && (_local3 <= _local1)) { return(1); } } return(0); } function resetRootDisplay() { rootDisplay.rootText.text = ""; rootDisplay._visible = false; rootDisplay.gotoAndPlay(1); } function loadRootDisplayText(theText) { rootDisplay._visible = true; rootDisplay.gotoAndPlay("open"); rootDisplay.theText = theText; } function textClearCheck() { var _local1 = new Date().getTime(); if ((_local1 - textClearStamp) > 7000) { screen_mover.screen.display.htmlText = ""; clearInterval(textClearInterval); } } function blankContent() { if (textClearInterval != null) { clearInterval(textClearInterval); } textClearStamp = new Date().getTime(); textClearInterval = setInterval(textClearCheck, 50); } function loadContent(num) { screens.screen_front.tutScreen_front.removeMovieClip(); screens.screen_front.tutScreen_back.removeMovieClip(); screens.screen_front.attachMovie("tutorialScreen" + num, "tutScreen_front", 0); screens.screen_back.attachMovie("tutorialScreen" + (num + 1), "tutScreen_back", 0); } function backScreen() { if (canMoveForward && (currentScreen > 0)) { currentScreen = currentScreen - 1; indicateProgress(); loadContent(currentScreen); } } function indicateProgress() { perComplete = Math.floor((currentScreen / maxScreens) * 100); progress_mover.progressor.gotoAndStop(perComplete); } function nextScreen() { var i; var perComplete; resetRootDisplay(); if (currentScreen != maxScreens) { currentScreen = currentScreen + 1; indicateProgress(); screens.play(); } else { canMoveForward = true; } } function swapScreens() { loadContent(currentScreen); } function nuke() { disasterType = "nuke"; missle.jet.gotoAndPlay("start"); missle.onEnterFrame = function () { this.trackTarget(); }; } function randomBounded(lowerBound, upperBound) { var _local2 = (upperBound - lowerBound) + 1; var _local1 = Math.random() * _local2; return(lowerBound + parseInt(_local1)); } function bumped() { if (!buttonsDestroyed) { button_mover.gotoAndPlay("meteor"); } if (!screenDestroyed) { screen_mover.gotoAndPlay("meteor"); } if (!barDestroyed) { progress_mover.gotoAndPlay("meteor"); } border_mover.gotoAndPlay("meteor"); lines_mover.gotoAndPlay("meteor"); notesMove.gotoAndPlay("meteor"); } function meteor() { meteorDex = 1; disasterType = "meteor"; exploders.attachMovie("meteor_click_clip", "meteor_click", 0); meteorInterval = setInterval(meteorShower, 50); } function meteorObj(targetX, targetY) { var _local1 = this; exploders.meteor_click.attachMovie("meteor", "meteor" + meteorDex, 1000 + meteorDex); _local1.clip = exploders.meteor_click["meteor" + meteorDex]; _local1.scale = randomBounded(10, 30); _local1.clip._xscale = _local1.scale; _local1.clip._yscale = _local1.scale; _local1.clip._x = Stage.width + _local1.clip._width; _local1.clip._y = randomBounded(0, Stage.height + (2 * _local1.clip._height)) - _local1.clip._height; _local1.z = randomBounded(3, 5); _local1.clip._x = _local1.x; _local1.clip._y = _local1.y; _local1.clip._xscale = _local1.clip._xscale * _local1.z; _local1.clip._yscale = _local1.clip._yscale * _local1.z; _local1.targetX = targetX; _local1.targetY = targetY; _local1.active = true; _local1.stepsToTarget = randomBounded(4, 8); _local1.stepsExecuted = 0; _local1.zStep = (_local1.scale - _local1.clip._xscale) / _local1.stepsToTarget; _local1.xStep = (_local1.targetX - _local1.clip._x) / _local1.stepsToTarget; _local1.yStep = (_local1.targetY - _local1.clip._y) / _local1.stepsToTarget; } function launchMeteor() { if (exploders.meteor_click["crater" + mAttachTrack]) { exploders.meteor_click["crater" + mAttachTrack].play(); exploders.meteor_click["cracks" + mAttachTrack].play(); } meteorArray[meteorDex] = new meteorObj(_xmouse, _ymouse); meteorDex++; } function meteorShower() { var m; var _local2; var _local1 = false; if (meteorTimeCount != 0) { _local2 = new Date().getTime(); if ((_local2 - meteorTimeCount) >= 5000) { meteorTimeCount = 0; fall_in_repair.play(); } } i = lowDex; while (i < meteorDex) { if (meteorArray[i].active) { if (!_local1) { lowDex = i; _local1 = true; } meteorArray[i].clip._xscale = meteorArray[i].clip._xscale + meteorArray[i].zStep; meteorArray[i].clip._yscale = meteorArray[i].clip._yscale + meteorArray[i].zStep; meteorArray[i].clip._x = meteorArray[i].clip._x + meteorArray[i].xStep; meteorArray[i].clip._y = meteorArray[i].clip._y + meteorArray[i].yStep; meteorArray[i].stepsExecuted = meteorArray[i].stepsExecuted + 1; if (meteorArray[i].clip._xscale <= meteorArray[i].scale) { attachCrater(meteorArray[i].clip._x, meteorArray[i].clip._y, (meteorArray[i].scale / 20) * 100); attachExplosion(meteorArray[i].clip._x, meteorArray[i].clip._y, (500 + (i * 10)) + 1); meteorArray[i].active = false; if (i == 1) { screens.blip.attachMovie("blip_clip", "blip_clip0", 999); lines_mover.gotoAndPlay("nuked"); meteorTimeCount = new Date().getTime(); } if (i == 5) { fall_in_repair.play(); meteorTimeCount = 0; } if (!screenDestroyed) { if (withinBox(meteorArray[i].clip._x, meteorArray[i].clip._y, 5.5, 265.95, 194.5, 394.95)) { screenDestroyed = true; screen_mover.gotoAndPlay("nuked"); } } if (!barDestroyed) { if (percentOverlap(meteorArray[i].clip._x - (meteorArray[i].clip._width / 2), meteorArray[i].clip._x + (meteorArray[i].clip._width / 2), 2, 302)) { if (percentOverlap(2, 12, meteorArray[i].clip._y - (meteorArray[i].clip._height / 2), meteorArray[i].clip._y + (meteorArray[i].clip._height / 2))) { barDestroyed = true; progress_mover.gotoAndPlay("nuked"); } } } if (!buttonsDestroyed) { if (withinBox(meteorArray[i].clip._x, meteorArray[i].clip._y, button_mover._x, button_mover._y, button_mover._x + button_mover._width, button_mover._y + button_mover._height)) { buttonsDestroyed = true; button_mover.gotoAndPlay("nuked"); } } meteorArray[i].clip.removeMovieClip(); bumped(); } } i++; } } function attachExplosion(x, y, theDepth) { var _local1 = theDepth; var _local2 = this; _local2.attachMovie("explosion", "explosion" + _local1, _local1); _local2["explosion" + _local1]._xscale = 200; _local2["explosion" + _local1]._yscale = 200; _local2["explosion" + _local1]._x = x; _local2["explosion" + _local1]._y = y; } function attachCrater(x, y, scale) { var _local1 = scale; exploders.meteor_click.attachMovie("meteor_crater_clip", "crater" + mAttachTrack, mAttachTrack + 100); exploders.meteor_click["crater" + mAttachTrack]._xscale = _local1; exploders.meteor_click["crater" + mAttachTrack]._yscale = _local1; exploders.meteor_click["crater" + mAttachTrack]._x = x; exploders.meteor_click["crater" + mAttachTrack]._y = y; exploders.meteor_click.attachMovie("meteor_crack_clip", "cracks" + mAttachTrack, mAttachTrack); exploders.meteor_click["cracks" + mAttachTrack]._xscale = _local1; exploders.meteor_click["cracks" + mAttachTrack]._yscale = _local1; exploders.meteor_click["cracks" + mAttachTrack]._x = x; exploders.meteor_click["cracks" + mAttachTrack]._y = y; mAttachTrack = mAttachTrack + 1; if (mAttachTrack >= 12) { mAttachTrack = 0; } } function startTheMayhem() { button_mover.gotoAndPlay("nuked"); screen_mover.gotoAndPlay("nuked"); progress_mover.gotoAndPlay("nuked"); border_mover.gotoAndPlay("nuked"); lines_mover.gotoAndPlay("nuked"); notesMove.gotoAndPlay("nuked"); screens.blip.attachMovie("blip_clip", "blip_clip0", 999); } var currentScreen = 0; var textClearInterval = null; var textClearStamp = null; var canMoveForward = true; var screenDestroyed = false; var barDestroyed = false; var buttonsDestroyed = false; var maxScreens = 54; var meteorArray = new Array(); var meteorDex = 0; var mAttachTrack = 0; var meteorInterval = null; var meteorTimeCount = 0; var lowDex = 0; var disasterType = "nuke"; loadContent(currentScreen); resetRootDisplay(); stop();Symbol 37 Buttonon (rollOver) { _parent._parent._parent.screenContent("modular"); } on (rollOut) { _parent._parent._parent.blankContent(); }Symbol 50 MovieClip Frame 1stop();Symbol 51 MovieClip Frame 1function adjustScroll(minY, maxY, scrollWhat, scrollBar) { var _local1 = scrollWhat; var _local2 = scrollBar; if (dragging) { spinFrame = spinFrame + 1; if (spinFrame > 59) { spinFrame = 1; } _local2.gotoAndStop(spinFrame); if (((_local1.minProgY == null) || (_local1.minProgY == undefined)) || ((_local1.minProgY + "") == "")) { _local1.minProgY = _local1._y - (_local1._height * 0.75); _local1.maxProgY = _local1._y; _local1.curScrollPos = _local2._y; } var _local3; if (_local2._y != _local1.curScrollPos) { _local3 = Math.abs((_local2._y - minY) / (maxY - minY)); newY = _local1.maxProgY - (_local3 * (_local1.maxProgY - _local1.minProgY)); if ((newY > _local1.minProgY) && (newY < _local1.maxProgY)) { _local1._y = newY; } else { if (newY <= _local1.minProgY) { _local1._y = _local1.minProgY; } if (newY >= _local1.maxProgY) { _local1._y = _local1.maxProgY; } } _local1.curScrollPos = _local2._y; } } } var spinFrame = 1; var dragging = false;Instance of Symbol 50 MovieClip "scrollHandle" in Symbol 51 MovieClip Frame 1on (press) { _parent.dragging = true; this.startDrag(false, 261, 76, 261, 145); } on (release) { _parent.dragging = false; this.stopDrag(); } onClipEvent (mouseMove) { _parent.adjustScroll(76, 145, _parent._parent._parent.notesMove.notesHolder.scrollText, this); }Symbol 77 MovieClip Frame 1stop();Symbol 77 MovieClip Frame 2stop();Symbol 77 MovieClip Frame 3stop();Symbol 78 MovieClip Frame 1stop();Symbol 78 MovieClip Frame 2stop();Symbol 80 MovieClip Frame 1function myObject(clip, speed) { var _local1 = this; _local1.clip = clip; _local1.speed = speed; _local1.face = 0; _local1.jumpspeed = 0; _local1.surfaceType = ""; _local1.surface = null; _local1.surfaceDelta = 0; } function detectKeys() { var _local1 = ""; if (Key.isDown(39)) { _local1 = _local1 + "|1|"; } if (Key.isDown(37)) { _local1 = _local1 + "|2|"; } if (Key.isDown(38)) { _local1 = _local1 + "|3|"; } if (Key.isDown(40)) { _local1 = _local1 + "|4|"; } actionRouting(_local1); } function actionRouting(pKey) { var _local1 = 0; if (pKey.indexOf("|1|") != -1) { _local1 = 1; } if (pKey.indexOf("|2|") != -1) { _local1 = -1; } moveObject(activeCharacter, _local1, 1); } function moveObject(obj, dirX, dirY) { var _local1 = obj; var _local2 = dirX; _local1.clip._x = _local1.clip._x + (_local2 * _local1.speed); if (_local2 < 0) { _local1.clip.gotoAndStop("left"); } if (_local2 > 0) { _local1.clip.gotoAndStop("right"); } if (_local2 != 0) { _local1.clip.anim.gotoAndStop("walk"); } else { _local1.clip.anim.gotoAndStop("stand"); } if (_local1.surfaceType != "moving") { floorTest = testFloors(_local1); if ((floorTest == -1) || (_local1.jumpspeed < 0)) { _local1.clip._y = _local1.clip._y + _local1.jumpspeed; _local1.jumpspeed = _local1.jumpspeed + gravity; } else { _local1.clip._y = floorTest; _local1.jumpspeed = 0; } if ((floorTest == -1) && (_local1.jumpspeed >= 0)) { floorTest = testMovingFloors(_local1); if (floorTest != -1) { _local1.clip._y = floorTest; _local1.jumpspeed = 0; } } } else if (!testMovingFloorHorizontals(_local1, _local1.surface)) { _local1.surfaceType = ""; } else { _local1.clip._y = _local1.surface._y + _local1.surface._parent._y; if ((_local1.surface._x != _local1.surfaceDelta) && (_local1.surfaceDelta != 0)) { _local1.clip._x = _local1.clip._x + (_local1.surface._x - _local1.surfaceDelta); _local1.surfaceDelta = _local1.surface._x; } } } function testFloors(obj) { var _local1; var charY1 = obj.clip._y; var charY2 = (obj.clip._y + obj.jumpspeed); var charX1 = (obj.clip._x - obj.clip._width); var charX2 = obj.clip._x; var dex1 = Math.floor(charY1 / sectionSize); var dex2 = Math.floor(charY2 / sectionSize); var floorSect = new Array((dex2 - dex1) + 1); var _local2 = 0; while (_local2 < floorSect.length) { floorSect[_local2] = floorSet[dex1 + _local2]; if (floorSect[_local2].floorDex > 0) { var _local3 = 0; while (_local3 < floorSect[_local2].floorDex) { _local1 = floorSect[_local2].floorArr[_local3]; if ((_local1.y >= charY1) && (_local1.y <= charY2)) { if (((charX1 >= _local1.x1) && (charX1 <= _local1.x2)) || ((charX2 >= _local1.x1) && (charX2 <= _local1.x2))) { obj.surface = _local1; obj.surfaceType = "static"; return(_local1.y); } } _local3++; } } _local2++; } return(-1); } function floor(y, x1, x2) { var _local1 = this; _local1.y = y; _local1.x1 = x1; _local1.x2 = x2; } function addFloor(y, x1, x2) { var _local1 = this; _local1.floorArr[_local1.floorDex] = new floor(y, x1, x2); _local1.floorDex++; } function floorSection() { var _local1 = this; _local1.floorArr = new Array(); _local1.floorDex = 0; _local1.addFloor = addFloor; } function testMovingFloorHorizontals(obj, floorObj) { var _local3 = obj.clip._x - obj.clip._width; var _local2 = obj.clip._x; var _local1 = floorObj._parent._x + floorObj._x; var fixX2 = (_local1 + floorObj._width); if (((((_local1 >= _local3) && (_local1 <= _local2)) || ((fixX2 >= _local3) && (fixX2 <= _local2))) || ((_local3 >= _local1) && (_local3 <= fixX2))) || ((_local2 >= _local1) && (_local2 <= fixX2))) { return(true); } return(false); } function testMovingFloors(obj) { var _local2 = obj; var compY; var _local1; var fixY; var _local3; var j; var thisFloor; if (movingFloorDex > 0) { compY = _local2.clip._y; var j = 0; while (j <= movingFloorDex) { thisFloor = movingFloorSet[j]; _local3 = 1; while (_local3 <= thisFloor.numInClip) { _local1 = thisFloor.clip["floor" + _local3]; fixY = thisFloor.clip._y + _local1._y; if ((fixY >= compY) && (fixY <= (compY + _local2.jumpspeed))) { if (testMovingFloorHorizontals(_local2, _local1)) { _local2.surface = _local1; _local2.surfaceType = "moving"; _local2.surfaceDelta = _local1._x; return(fixY + _local1._y); } } _local3++; } j++; } } return(-1); } function addMovingFloor(clip, numInClip) { movingFloorSet[movingFloorDex] = new movingFloor(clip, numInClip); movingFloorDex = movingFloorDex + 1; } function movingFloor(clip, numInClip) { this.clip = clip; this.numInClip = numInClip; } function easyAddFloor(tClip, eName, y, x) { var _local3 = tClip; var _local1 = Math.floor(y / sectionSize); var _local2 = floorSet[_local1].floorDex; _local3.attachMovie(eName, (("floor_" + _local1) + "_") + _local2, (_local1 * 100) + _local2); _local3[(("floor_" + _local1) + "_") + _local2]._y = y; _local3[(("floor_" + _local1) + "_") + _local2]._x = x; floorSet[Math.floor(_local1)].addFloor(y, x, x + _local3[(("floor_" + _local1) + "_") + _local2]._width); } function easyAddMovingFloor(tClip, eName, y, x, numFloors) { var _local2 = eName; var _local3 = tClip; var _local1 = movingFloorDex + 1; _local3.attachMovie(_local2, _local2 + _local1, ((gameHeight / sectionSize) * 100) + _local1); _local3[_local2 + _local1]._x = x; _local3[_local2 + _local1]._y = y; addMovingFloor(_local3[_local2 + _local1], numFloors); } function deleteFloors() { var _local1; var _local2; _local1 = 0; while (_local1 < floorSet.length) { _local2 = 0; while (_local2 < floorSet[_local1].floorDex) { attachClip[(("floor_" + _local1) + "_") + _local2].removeMovieClip(); _local2++; } floorSet[_local1].floorDex = 0; _local1++; } _local1 = 0; while (_local1 < movingFloorDex) { movingFloorSet[_local1].clip.removeMovieClip(); _local1++; } movingFloorDex = 0; floorSet[Math.floor(80 / sectionSize)].addFloor(80, 16, 116); floorSet[Math.floor(190 / sectionSize)].addFloor(190, 0, 320); easyAddMovingFloor(attachClip, "moving_scifi_floor", 107, 104, 1); stickMan1._x = origX; stickMan1._y = origY; } this.onEnterFrame = function () { detectKeys(); }; var stickObj1 = new myObject(stickMan1, 3); var activeCharacter = stickObj1; var origX = stickMan1._x; var origY = stickMan1._y; var sectionSize = 20; var gameWidth = 320; var gameHeight = 200; var gravity = 2; var i; var floorSet = new Array(Math.floor(gameHeight / sectionSize) + 1); i = 0; while (i < floorSet.length) { floorSet[i] = new floorSection(); i++; } var movingFloorSet = new Array(); var movingFloorDex = 0; floorSet[Math.floor(80 / sectionSize)].addFloor(80, 16, 116); floorSet[Math.floor(190 / sectionSize)].addFloor(190, 0, 320); easyAddMovingFloor(attachClip, "moving_scifi_floor", 107, 104, 1);Instance of Symbol 80 MovieClip in Symbol 83 MovieClip [tutorialScreen47] Frame 1on (release) { this.deleteFloors(); }Symbol 92 MovieClip Frame 1function myObject(clip, speed) { var _local1 = this; _local1.clip = clip; _local1.speed = speed; _local1.face = 0; _local1.jumpspeed = 0; _local1.surfaceType = ""; _local1.surface = null; _local1.surfaceDelta = 0; _local1.jumpstart = -15; } function detectKeys() { var _local1 = ""; if (Key.isDown(39)) { _local1 = _local1 + "|1|"; } if (Key.isDown(37)) { _local1 = _local1 + "|2|"; } if (Key.isDown(38)) { _local1 = _local1 + "|3|"; } if (Key.isDown(40)) { _local1 = _local1 + "|4|"; } if (Key.isDown(32)) { _local1 = _local1 + "|5|"; } actionRouting(_local1); } function actionRouting(pKey) { var _local2 = pKey; var _local1 = 0; if (_local2.indexOf("|1|") != -1) { _local1 = 1; } if (_local2.indexOf("|2|") != -1) { _local1 = -1; } if (_local2.indexOf("|5|") != -1) { if ((activeCharacter.jumpspeed == 0) && (activeCharacter.surfaceType != "")) { activeCharacter.surfaceType = ""; activeCharacter.jumpspeed = activeCharacter.jumpstart; } } moveObject(activeCharacter, _local1, 1); } function moveObject(obj, dirX, dirY) { var _local1 = obj; var _local2 = dirX; _local1.clip._x = _local1.clip._x + (_local2 * _local1.speed); if (_local2 < 0) { _local1.clip.gotoAndStop("left"); } if (_local2 > 0) { _local1.clip.gotoAndStop("right"); } if (_local2 != 0) { _local1.clip.anim.gotoAndStop("walk"); } else { _local1.clip.anim.gotoAndStop("stand"); } if ((_local1.surfaceType == "") && (_local1.jumpspeed != 0)) { _local1.clip.anim.gotoAndStop("jump"); } if (_local1.surfaceType != "moving") { floorTest = testFloors(_local1); if ((floorTest == -1) || (_local1.jumpspeed < 0)) { _local1.clip._y = _local1.clip._y + _local1.jumpspeed; _local1.jumpspeed = _local1.jumpspeed + gravity; } else { _local1.clip._y = floorTest; _local1.jumpspeed = 0; } if ((floorTest == -1) && (_local1.jumpspeed >= 0)) { floorTest = testMovingFloors(_local1); if (floorTest != -1) { _local1.clip._y = floorTest; _local1.jumpspeed = 0; } } } else if (!testMovingFloorHorizontals(_local1, _local1.surface)) { _local1.surfaceType = ""; } else { _local1.clip._y = _local1.surface._y + _local1.surface._parent._y; if ((_local1.surface._x != _local1.surfaceDelta) && (_local1.surfaceDelta != 0)) { _local1.clip._x = _local1.clip._x + (_local1.surface._x - _local1.surfaceDelta); _local1.surfaceDelta = _local1.surface._x; } } } function testFloors(obj) { var _local1; var charY1 = obj.clip._y; var charY2 = (obj.clip._y + obj.jumpspeed); var charX1 = (obj.clip._x - obj.clip._width); var charX2 = obj.clip._x; var dex1 = Math.floor(charY1 / sectionSize); var dex2 = Math.floor(charY2 / sectionSize); var floorSect = new Array((dex2 - dex1) + 1); var _local2 = 0; while (_local2 < floorSect.length) { floorSect[_local2] = floorSet[dex1 + _local2]; if (floorSect[_local2].floorDex > 0) { var _local3 = 0; while (_local3 < floorSect[_local2].floorDex) { _local1 = floorSect[_local2].floorArr[_local3]; if ((_local1.y >= charY1) && (_local1.y <= charY2)) { if (((charX1 >= _local1.x1) && (charX1 <= _local1.x2)) || ((charX2 >= _local1.x1) && (charX2 <= _local1.x2))) { obj.surface = _local1; obj.surfaceType = "static"; return(_local1.y); } } _local3++; } } _local2++; } return(-1); } function floor(y, x1, x2) { var _local1 = this; _local1.y = y; _local1.x1 = x1; _local1.x2 = x2; } function addFloor(y, x1, x2) { var _local1 = this; _local1.floorArr[_local1.floorDex] = new floor(y, x1, x2); _local1.floorDex++; } function floorSection() { var _local1 = this; _local1.floorArr = new Array(); _local1.floorDex = 0; _local1.addFloor = addFloor; } function testMovingFloorHorizontals(obj, floorObj) { var _local3 = obj.clip._x - obj.clip._width; var _local2 = obj.clip._x; var _local1 = floorObj._parent._x + floorObj._x; var fixX2 = (_local1 + floorObj._width); if (((((_local1 >= _local3) && (_local1 <= _local2)) || ((fixX2 >= _local3) && (fixX2 <= _local2))) || ((_local3 >= _local1) && (_local3 <= fixX2))) || ((_local2 >= _local1) && (_local2 <= fixX2))) { return(true); } return(false); } function testMovingFloors(obj) { var _local2 = obj; var compY; var _local1; var fixY; var _local3; var j; var thisFloor; if (movingFloorDex > 0) { compY = _local2.clip._y; var j = 0; while (j < movingFloorDex) { thisFloor = movingFloorSet[j]; _local3 = 1; while (_local3 <= thisFloor.numInClip) { _local1 = thisFloor.clip["floor" + _local3]; fixY = thisFloor.clip._y + _local1._y; if ((fixY >= compY) && (fixY <= (compY + _local2.jumpspeed))) { if (testMovingFloorHorizontals(_local2, _local1)) { _local2.surface = _local1; _local2.surfaceType = "moving"; _local2.surfaceDelta = _local1._x; return(fixY + _local1._y); } } _local3++; } j++; } } return(-1); } function addMovingFloor(clip, numInClip) { movingFloorSet[movingFloorDex] = new movingFloor(clip, numInClip); movingFloorDex = movingFloorDex + 1; } function movingFloor(clip, numInClip) { this.clip = clip; this.numInClip = numInClip; } function easyAddFloor(tClip, eName, y, x) { var _local3 = tClip; var _local1 = Math.floor(y / sectionSize); var _local2 = floorSet[_local1].floorDex; _local3.attachMovie(eName, (("floor_" + _local1) + "_") + _local2, (_local1 * 100) + _local2); _local3[(("floor_" + _local1) + "_") + _local2]._y = y; _local3[(("floor_" + _local1) + "_") + _local2]._x = x; floorSet[Math.floor(_local1)].addFloor(y, x, x + _local3[(("floor_" + _local1) + "_") + _local2]._width); } function easyAddMovingFloor(tClip, eName, y, x, numFloors) { var _local2 = eName; var _local3 = tClip; var _local1 = movingFloorDex + 1; _local3.attachMovie(_local2, _local2 + _local1, ((gameHeight / sectionSize) * 100) + _local1); _local3[_local2 + _local1]._x = x; _local3[_local2 + _local1]._y = y; addMovingFloor(_local3[_local2 + _local1], numFloors); } function deleteFloors() { var _local1; var _local2; _local1 = 0; while (_local1 < floorSet.length) { _local2 = 0; while (_local2 < floorSet[_local1].floorDex) { attachClip[(("floor_" + _local1) + "_") + _local2].removeMovieClip(); _local2++; } floorSet[_local1].floorDex = 0; _local1++; } _local1 = 0; while (_local1 < movingFloorDex) { movingFloorSet[_local1].clip.removeMovieClip(); _local1++; } movingFloorDex = 0; floorSet[Math.floor(190 / sectionSize)].addFloor(190, 0, 320); easyAddMovingFloor(attachClip, "moving_scifi_floor", 107, 104, 1); easyAddFloor(attachClip, "cave_floor", 80, 16); easyAddFloor(attachClip, "cave_floor", 130, 16); stickMan1._x = origX; stickMan1._y = origY; } this.onEnterFrame = function () { detectKeys(); }; var stickObj1 = new myObject(stickMan1, 3); var activeCharacter = stickObj1; var origX = stickMan1._x; var origY = stickMan1._y; var sectionSize = 20; var gameWidth = 320; var gameHeight = 200; var gravity = 2; var i; var floorSet = new Array(Math.floor(gameHeight / sectionSize) + 1); i = 0; while (i < floorSet.length) { floorSet[i] = new floorSection(); i++; } var movingFloorSet = new Array(); var movingFloorDex = 0; floorSet[Math.floor(190 / sectionSize)].addFloor(190, 0, 320); easyAddMovingFloor(attachClip, "moving_scifi_floor", 107, 104, 1); easyAddFloor(attachClip, "cave_floor", 80, 16); easyAddFloor(attachClip, "cave_floor", 130, 16);Symbol 95 Buttonon (release) { _parent._parent._parent.loadRootDisplayText(targetText); }Symbol 98 MovieClip [tutorialScreen52] Frame 1var targetText = "this.onEnterFrame = function() { detectKeys(); }\n"; targetText = targetText + "function myObject(clip,speed){\n"; targetText = targetText + " this.clip = clip;\n"; targetText = targetText + " this.speed = speed;\n"; targetText = targetText + " this.face = 0;\n"; targetText = targetText + " this.jumpspeed = 0;\n"; targetText = targetText + " this.surfaceType = \"\";\n"; targetText = targetText + " this.surface = null;\n"; targetText = targetText + " this.surfaceDelta = 0;\n"; targetText = targetText + "\tthis.jumpstart = -15;\n"; targetText = targetText + "}\n"; targetText = targetText + "var stickObj1 = new myObject(stickMan1,3);\n"; targetText = targetText + "var activeCharacter = stickObj1;\n"; targetText = targetText + "function detectKeys(){\n"; targetText = targetText + " var pkey = \"\";\n"; targetText = targetText + " if (Key.isDown(Key.RIGHT)) { pkey += \"|1|\"; } \n"; targetText = targetText + " if (Key.isDown(Key.LEFT)) { pkey += \"|2|\"; }\n"; targetText = targetText + " if (Key.isDown(Key.UP)) { pkey += \"|3|\"; }\n"; targetText = targetText + " if (Key.isDown(Key.DOWN)) { pkey += \"|4|\"; }\n"; targetText = targetText + " if (Key.isDown(Key.SPACE)) { pkey += \"|5|\"; }\n"; targetText = targetText + " actionRouting(pkey);\n"; targetText = targetText + "}\n"; targetText = targetText + "function actionRouting(pKey){\n"; targetText = targetText + " var dirX = 0;\n"; targetText = targetText + " if (pKey.indexOf(\"|1|\") != -1) { dirX = 1; }\n"; targetText = targetText + " if (pKey.indexOf(\"|2|\") != -1) { dirX = -1; }\n"; targetText = targetText + " if (pKey.indexOf(\"|5|\") != -1) {\n"; targetText = targetText + " if(activeCharacter.jumpspeed == 0 && activeCharacter.surfaceType != \"\"){\n"; targetText = targetText + " activeCharacter.surfaceType = \"\";\n"; targetText = targetText + " activeCharacter.jumpspeed = activeCharacter.jumpstart;\n"; targetText = targetText + " }\n"; targetText = targetText + " }\n"; targetText = targetText + " moveObject(activeCharacter,dirX,1);\n"; targetText = targetText + "}\n"; targetText = targetText + "function moveObject(obj, dirX, dirY){\n"; targetText = targetText + " obj.clip._x += dirX * obj.speed;\n"; targetText = targetText + " if(dirX<0){ obj.clip.gotoAndStop(\"left\"); }\n"; targetText = targetText + " if(dirX>0){ obj.clip.gotoAndStop(\"right\"); }\n"; targetText = targetText + " if(dirX !=0){ obj.clip.anim.gotoAndStop(\"walk\"); }else{ obj.clip.anim.gotoAndStop(\"stand\"); }\n"; targetText = targetText + " if(obj.surfaceType == \"\" && obj.jumpspeed != 0){ obj.clip.anim.gotoAndStop(\"jump\"); }\n"; targetText = targetText + " if(obj.surfaceType!=\"moving\"){\n"; targetText = targetText + " floorTest = testFloors(obj);\n"; targetText = targetText + " if(floorTest == -1 || obj.jumpspeed<0) {\n"; targetText = targetText + " obj.clip._y += obj.jumpspeed;\n"; targetText = targetText + " obj.jumpspeed += gravity;\n"; targetText = targetText + " }else{\n"; targetText = targetText + " obj.clip._y = floorTest;\n"; targetText = targetText + " obj.jumpspeed = 0;\n"; targetText = targetText + " }\n"; targetText = targetText + " if(floorTest == -1 && obj.jumpspeed>=0){\n"; targetText = targetText + " floorTest = testMovingFloors(obj);\n"; targetText = targetText + " if(floorTest != -1){\n"; targetText = targetText + " obj.clip._y = floorTest;\n"; targetText = targetText + " obj.jumpspeed = 0;\n"; targetText = targetText + " }\n"; targetText = targetText + " }\n"; targetText = targetText + " }else{\n"; targetText = targetText + " if(!testMovingFloorHorizontals(obj,obj.surface)){\n"; targetText = targetText + " obj.surfaceType=\"\";\n"; targetText = targetText + " }else{\n"; targetText = targetText + " obj.clip._y = obj.surface._y + obj.surface._parent._y;\n"; targetText = targetText + " if(obj.surface._x!=obj.surfaceDelta && obj.surfaceDelta!=0){\n"; targetText = targetText + " obj.clip._x += obj.surface._x - obj.surfaceDelta;\n"; targetText = targetText + " obj.surfaceDelta = obj.surface._x;\n"; targetText = targetText + " }\n"; targetText = targetText + " }\n"; targetText = targetText + " }\n"; targetText = targetText + "}\n"; targetText = targetText + "function testFloors(obj){\n"; targetText = targetText + " var aFloor;\n"; targetText = targetText + " var charY1 = obj.clip._y;\n"; targetText = targetText + " var charY2 = obj.clip._y + obj.jumpspeed;\n"; targetText = targetText + " var charX1 = obj.clip._x - obj.clip._width;\n"; targetText = targetText + " var charX2 = obj.clip._x;\n"; targetText = targetText + " var dex1 = Math.floor(charY1/sectionSize);\n"; targetText = targetText + " var dex2 = Math.floor(charY2/sectionSize);\n"; targetText = targetText + " var floorSect = new Array((dex2-dex1) + 1);\n"; targetText = targetText + " for(var j=0; j<floorSect.length; j++){\n"; targetText = targetText + " floorSect[j] = floorSet[dex1+j];\n"; targetText = targetText + " if(floorSect[j].floorDex>0){\n"; targetText = targetText + " for(var i=0; i<floorSect[j].floorDex; i++){\n"; targetText = targetText + " aFloor = floorSect[j].floorArr[i];\n"; targetText = targetText + " if(aFloor.y>=charY1 && aFloor.y<=charY2){\n"; targetText = targetText + " if(charX1>=aFloor.x1 && charX1<=aFloor.x2 || charX2>=aFloor.x1 && charX2<=aFloor.x2){\n"; targetText = targetText + " obj.surface = aFloor;\n"; targetText = targetText + " obj.surfaceType = \"static\";\n"; targetText = targetText + " return aFloor.y;\n"; targetText = targetText + " }\n"; targetText = targetText + " }\n"; targetText = targetText + " }\n"; targetText = targetText + " }\n"; targetText = targetText + " }\n"; targetText = targetText + " return -1;\n"; targetText = targetText + "}\n"; targetText = targetText + "function floor(y,x1,x2){\n"; targetText = targetText + " this.y = y;\n"; targetText = targetText + " this.x1 = x1;\n"; targetText = targetText + " this.x2 = x2;\n"; targetText = targetText + "}\n"; targetText = targetText + "function addFloor(y,x1,x2){\n"; targetText = targetText + "\tthis.floorArr[this.floorDex] = new floor(y,x1,x2);\n"; targetText = targetText + "\tthis.floorDex ++;\n"; targetText = targetText + "}\n"; targetText = targetText + "function floorSection(){\n"; targetText = targetText + "\tthis.floorArr = new Array();\n"; targetText = targetText + "\tthis.floorDex = 0;\n"; targetText = targetText + "\tthis.addFloor = addFloor;\n"; targetText = targetText + "}\n"; targetText = targetText + "function testMovingFloorHorizontals(obj,floorObj){\n"; targetText = targetText + " var c1 = obj.clip._x - obj.clip._width;\n"; targetText = targetText + " var c2 = obj.clip._x;\n"; targetText = targetText + "\tvar fixX = floorObj._parent._x + floorObj._x;\n"; targetText = targetText + "\tvar fixX2 = fixX + floorObj._width;\n"; targetText = targetText + "\tif(fixX>=c1 && fixX<=c2 || fixX2>=c1 && fixX2<=c2 || c1>=fixX && c1<=fixX2 || c2>=fixX && c2<=fixX2){\n"; targetText = targetText + "\t\treturn true;\n"; targetText = targetText + "\t}else{\n"; targetText = targetText + "\t\treturn false;\n"; targetText = targetText + "\t}\n"; targetText = targetText + "}\n"; targetText = targetText + "function testMovingFloors(obj){\n"; targetText = targetText + " var compY,thisClip,fixY,i,j,thisFloor;\n"; targetText = targetText + " if(movingFloorDex>0){\n"; targetText = targetText + " compY = obj.clip._y;\n"; targetText = targetText + " for(var j=0; j<movingFloorDex; j++){\n"; targetText = targetText + " thisFloor = movingFloorSet[j];\n"; targetText = targetText + " for(var i=1; i<=thisFloor.numInClip; i++){\n"; targetText = targetText + " thisClip = thisFloor.clip[\"floor\" + i];\n"; targetText = targetText + " fixY = thisFloor.clip._y + thisClip._y;\n"; targetText = targetText + " if(fixY>=compY && fixY<=compY + obj.jumpspeed){\n"; targetText = targetText + " if(testMovingFloorHorizontals(obj,thisClip)){\n"; targetText = targetText + " obj.surface = thisClip;\n"; targetText = targetText + " obj.surfaceType = \"moving\";\n"; targetText = targetText + " obj.surfaceDelta = thisClip._x;\n"; targetText = targetText + " return fixY + thisClip._y;\n"; targetText = targetText + " }\n"; targetText = targetText + " }\n"; targetText = targetText + " }\n"; targetText = targetText + " }\n"; targetText = targetText + " }\n"; targetText = targetText + " return -1;\n"; targetText = targetText + "}\n"; targetText = targetText + "function addMovingFloor(clip,numInClip){\n"; targetText = targetText + " movingFloorSet[movingFloorDex] = new movingFloor(clip,numInClip);\n"; targetText = targetText + " movingFloorDex += 1;\n"; targetText = targetText + "}\n"; targetText = targetText + "function movingFloor(clip,numInClip){\n"; targetText = targetText + " this.clip = clip;\n"; targetText = targetText + " this.numInClip = numInClip;\n"; targetText = targetText + "}\n"; targetText = targetText + "var sectionSize = 20;\n"; targetText = targetText + "var gameWidth = 320;\n"; targetText = targetText + "var gameHeight = 200;\n"; targetText = targetText + "var gravity = 2;\n"; targetText = targetText + "var i;\n"; targetText = targetText + "var floorSet = new Array(Math.floor(gameHeight/sectionSize)+1);\n"; targetText = targetText + "for (i=0; i<floorSet.length; i++) {\n"; targetText = targetText + "\tfloorSet[i] = new floorSection();\n"; targetText = targetText + "}\n"; targetText = targetText + "var movingFloorSet = new Array();\n"; targetText = targetText + "var movingFloorDex = 0;\n"; targetText = targetText + "function easyAddFloor(tClip,eName,y,x){\n"; targetText = targetText + " var setDex = Math.floor(y/sectionSize);\n"; targetText = targetText + " var floorInSet = floorSet[setDex].floorDex;\n"; targetText = targetText + " tClip.attachMovie(eName,\"floor_\" + setDex + \"_\" + floorInSet,setDex*100 + floorInSet);\n"; targetText = targetText + " tClip[\"floor_\" + setDex + \"_\" + floorInSet]._y = y;\n"; targetText = targetText + " tClip[\"floor_\" + setDex + \"_\" + floorInSet]._x = x;\n"; targetText = targetText + " floorSet[Math.floor(setDex)].addFloor(y,x,x+tClip[\"floor_\" + setDex + \"_\" + floorInSet]._width);\n"; targetText = targetText + "}\n"; targetText = targetText + "function easyAddMovingFloor(tClip,eName,y,x,numFloors){\n"; targetText = targetText + " var mDex = movingFloorDex + 1;\n"; targetText = targetText + " tClip.attachMovie(eName,eName + mDex,gameHeight/sectionSize*100 + mDex);\n"; targetText = targetText + " tClip[eName + mDex]._x = x;\n"; targetText = targetText + " tClip[eName + mDex]._y = y;\n"; targetText = targetText + " addMovingFloor(tClip[eName + mDex],numFloors);\n"; targetText = targetText + "}\n"; targetText = targetText + "floorSet[Math.floor(190/sectionSize)].addFloor(190,0,320);\n"; targetText = targetText + "easyAddMovingFloor(attachClip,\"moving_scifi_floor\",107,104,1);\n"; targetText = targetText + "easyAddFloor(attachClip,\"cave_floor\",80,16);\n"; targetText = targetText + "easyAddFloor(attachClip,\"cave_floor\",130,16);\n";Instance of Symbol 92 MovieClip in Symbol 98 MovieClip [tutorialScreen52] Frame 1on (release) { this.deleteFloors(); }Symbol 126 MovieClip Frame 1function adjustScroll(minY, maxY, scrollWhat, scrollBar) { var _local1 = scrollWhat; var _local2 = scrollBar; if (dragging) { spinFrame = spinFrame + 1; if (spinFrame > 59) { spinFrame = 1; } _local2.gotoAndStop(spinFrame); if (((_local1.minProgY == null) || (_local1.minProgY == undefined)) || ((_local1.minProgY + "") == "")) { _local1.minProgY = _local1._y - (_local1._height * 0.75); _local1.maxProgY = _local1._y; _local1.curScrollPos = _local2._y; } var _local3; if (_local2._y != _local1.curScrollPos) { _local3 = Math.abs((_local2._y - minY) / (maxY - minY)); newY = _local1.maxProgY - (_local3 * (_local1.maxProgY - _local1.minProgY)); if ((newY > _local1.minProgY) && (newY < _local1.maxProgY)) { _local1._y = newY; } else { if (newY <= _local1.minProgY) { _local1._y = _local1.minProgY; } if (newY >= _local1.maxProgY) { _local1._y = _local1.maxProgY; } } _local1.curScrollPos = _local2._y; } } } var spinFrame = 1; var dragging = false;Instance of Symbol 50 MovieClip "scrollHandle" in Symbol 126 MovieClip Frame 1on (press) { _parent.dragging = true; this.startDrag(false, 522.7, 18, 522.7, 141.5); } on (release) { _parent.dragging = false; this.stopDrag(); } onClipEvent (mouseMove) { _parent.adjustScroll(18, 141.5, _parent.scrollText, this); }Symbol 136 MovieClip Frame 1function adjustScroll(minY, maxY, scrollWhat, scrollBar) { var _local1 = scrollWhat; var _local2 = scrollBar; if (dragging) { spinFrame = spinFrame + 1; if (spinFrame > 59) { spinFrame = 1; } _local2.gotoAndStop(spinFrame); if (((_local1.minProgY == null) || (_local1.minProgY == undefined)) || ((_local1.minProgY + "") == "")) { _local1.minProgY = _local1._y - (_local1._height * 0.75); _local1.maxProgY = _local1._y; _local1.curScrollPos = _local2._y; } var _local3; if (_local2._y != _local1.curScrollPos) { _local3 = Math.abs((_local2._y - minY) / (maxY - minY)); newY = _local1.maxProgY - (_local3 * (_local1.maxProgY - _local1.minProgY)); if ((newY > _local1.minProgY) && (newY < _local1.maxProgY)) { _local1._y = newY; } else { if (newY <= _local1.minProgY) { _local1._y = _local1.minProgY; } if (newY >= _local1.maxProgY) { _local1._y = _local1.maxProgY; } } _local1.curScrollPos = _local2._y; } } } var spinFrame = 1; var dragging = false;Instance of Symbol 50 MovieClip "scrollHandle" in Symbol 136 MovieClip Frame 1on (press) { _parent.dragging = true; this.startDrag(false, 522.7, 18, 522.7, 141.5); } on (release) { _parent.dragging = false; this.stopDrag(); } onClipEvent (mouseMove) { _parent.adjustScroll(18, 141.5, _parent.scrollText, this); }Symbol 158 MovieClip Frame 1var checked = false; stop();Symbol 158 MovieClip Frame 2var checked = true; stop();Symbol 172 MovieClip Frame 15gotoAndPlay (1);Symbol 172 MovieClip Frame 16gotoAndPlay (1);Symbol 172 MovieClip Frame 17gotoAndPlay (1);Symbol 178 MovieClip Frame 1var mouseIsDown = false;Symbol 179 MovieClip Frame 1function myObject(clip, speed) { var _local1 = this; _local1.clip = clip; _local1.speed = speed; _local1.face = 0; _local1.jumpspeed = 0; } function detectKeys() { var _local1 = ""; if (Key.isDown(39)) { _local1 = _local1 + "|1|"; } if (Key.isDown(37)) { _local1 = _local1 + "|2|"; } if (Key.isDown(38)) { _local1 = _local1 + "|3|"; } if (Key.isDown(40)) { _local1 = _local1 + "|4|"; } actionRouting(_local1); } function actionRouting(pKey) { var _local1 = 0; if (pKey.indexOf("|1|") != -1) { _local1 = 1; } if (pKey.indexOf("|2|") != -1) { _local1 = -1; } moveObject(activeCharacter, _local1, 1); } function moveObject(obj, dirX, dirY) { var _local1 = obj; var _local2 = dirX; _local1.clip._x = _local1.clip._x + (_local2 * _local1.speed); if (_local2 < 0) { _local1.clip.gotoAndStop("left"); } if (_local2 > 0) { _local1.clip.gotoAndStop("right"); } if (_local2 != 0) { _local1.clip.anim.gotoAndStop("walk"); } else { _local1.clip.anim.gotoAndStop("stand"); } floorTest = testFloors(_local1); if ((floorTest == -1) || (_local1.jumpspeed < 0)) { _local1.clip._y = _local1.clip._y + _local1.jumpspeed; _local1.jumpspeed = _local1.jumpspeed + gravity; } else { _local1.clip._y = floorTest; _local1.jumpspeed = 0; } } function testFloors(obj) { var _local1; var charY1 = obj.clip._y; var charY2 = (obj.clip._y + obj.jumpspeed); var charX1 = (obj.clip._x - obj.clip._width); var charX2 = obj.clip._x; var dex1 = Math.floor(charY1 / sectionSize); var dex2 = Math.floor(charY2 / sectionSize); var floorSect = new Array((dex2 - dex1) + 1); var _local2 = 0; while (_local2 < floorSect.length) { floorSect[_local2] = floorSet[dex1 + _local2]; if (floorSect[_local2].floorDex > 0) { var _local3 = 0; while (_local3 < floorSect[_local2].floorDex) { _local1 = floorSect[_local2].floorArr[_local3]; if ((_local1.y >= charY1) && (_local1.y <= charY2)) { if (((charX1 >= _local1.x1) && (charX1 <= _local1.x2)) || ((charX2 >= _local1.x1) && (charX2 <= _local1.x2))) { return(_local1.y); } } _local3++; } } _local2++; } return(-1); } function floor(y, x1, x2) { var _local1 = this; _local1.y = y; _local1.x1 = x1; _local1.x2 = x2; } function addFloor(y, x1, x2) { var _local1 = this; _local1.floorArr[_local1.floorDex] = new floor(y, x1, x2); _local1.floorDex++; } function floorSection() { var _local1 = this; _local1.floorArr = new Array(); _local1.floorDex = 0; _local1.addFloor = addFloor; } function easyAddFloor(tClip, eName, y, x) { var _local3 = tClip; var _local1 = Math.floor(y / sectionSize); var _local2 = floorSet[_local1].floorDex; _local3.attachMovie(eName, (("floor_" + _local1) + "_") + _local2, (_local1 * 100) + _local2); _local3[(("floor_" + _local1) + "_") + _local2]._y = y; _local3[(("floor_" + _local1) + "_") + _local2]._x = x; floorSet[Math.floor(_local1)].addFloor(y, x, x + _local3[(("floor_" + _local1) + "_") + _local2]._width); } function deleteFloors() { var _local2; var _local1; _local2 = 0; while (_local2 < floorSet.length) { _local1 = 0; while (_local1 < floorSet[_local2].floorDex) { attachClip[(("floor_" + _local2) + "_") + _local1].removeMovieClip(); _local1++; } floorSet[_local2].floorDex = 0; _local2++; } floorSet[Math.floor(80 / sectionSize)].addFloor(80, 16, 116); floorSet[Math.floor(190 / sectionSize)].addFloor(190, 0, 320); stickMan1._x = origX; stickMan1._y = origY; } this.onEnterFrame = function () { detectKeys(); }; var stickObj1 = new myObject(stickMan1, 3); var activeCharacter = stickObj1; var origX = stickMan1._x; var origY = stickMan1._y; var sectionSize = 20; var gameWidth = 320; var gameHeight = 200; var gravity = 2; var i; var floorSet = new Array(Math.floor(gameHeight / sectionSize) + 1); i = 0; while (i < floorSet.length) { floorSet[i] = new floorSection(); i++; } floorSet[Math.floor(80 / sectionSize)].addFloor(80, 16, 116); floorSet[Math.floor(190 / sectionSize)].addFloor(190, 0, 320);Symbol 185 Buttonon (release) { var proofClip = minigame.corner; if (proofClip) { minigame.easyAddFloor(minigame.attachClip, selectedFloor, proofClip._y, proofClip._x); proofClip.removeMovieClip(); } }Symbol 187 MovieClip [tutorialScreen37] Frame 1function checkTheBox(box, floorType) { var _local2 = box; var _local3 = floorType; var _local1; _local1 = 1; while (_local1 < 4) { if (_local2._name == ("c" + _local1)) { _local2.gotoAndStop("on"); selectedFloor = _local3; } else { this["c" + _local1].gotoAndStop("off"); } _local1++; } } var selectedFloor = "vector_floor"; checkTheBox(c1, "vector_floor");Instance of Symbol 158 MovieClip "c1" in Symbol 187 MovieClip [tutorialScreen37] Frame 1on (release) { if (!this.checked) { _parent.checkTheBox(this, "vector_floor"); } }Instance of Symbol 158 MovieClip "c2" in Symbol 187 MovieClip [tutorialScreen37] Frame 1on (release) { if (!this.checked) { _parent.checkTheBox(this, "cave_floor"); } }Instance of Symbol 158 MovieClip "c3" in Symbol 187 MovieClip [tutorialScreen37] Frame 1on (release) { if (!this.checked) { _parent.checkTheBox(this, "scifi_floor"); } }Instance of Symbol 178 MovieClip "minicontrol" in Symbol 187 MovieClip [tutorialScreen37] Frame 1onClipEvent (mouseDown) { this.mouseIsDown = true; if ((((_xmouse >= 0) && (_ymouse >= 0)) && (_xmouse <= this._width)) && (_ymouse <= this._height)) { if (this.mouseIsDown) { _parent.minigame.attachMovie("corner", "corner", 999999); _parent.minigame.corner._x = _xmouse * 3.33333333333333; _parent.minigame.corner._y = _ymouse * 3.33333333333333; } } } onClipEvent (mouseUp) { this.mouseIsDown = false; } onClipEvent (mouseMove) { if ((((_xmouse >= 0) && (_ymouse >= 0)) && (_xmouse <= this._width)) && (_ymouse <= this._height)) { if (this.mouseIsDown) { _parent.minigame.attachMovie("corner", "corner", 999999); _parent.minigame.corner._x = _xmouse * 3.33333333333333; _parent.minigame.corner._y = _ymouse * 3.33333333333333; } } }Instance of Symbol 179 MovieClip "minigame" in Symbol 187 MovieClip [tutorialScreen37] Frame 1on (release) { this.deleteFloors(); }Symbol 192 MovieClip Frame 1function adjustScroll(minY, maxY, scrollWhat, scrollBar) { var _local1 = scrollWhat; var _local2 = scrollBar; if (dragging) { spinFrame = spinFrame + 1; if (spinFrame > 59) { spinFrame = 1; } _local2.gotoAndStop(spinFrame); if (((_local1.minProgY == null) || (_local1.minProgY == undefined)) || ((_local1.minProgY + "") == "")) { _local1.minProgY = _local1._y - (_local1._height * 0.75); _local1.maxProgY = _local1._y; _local1.curScrollPos = _local2._y; } var _local3; if (_local2._y != _local1.curScrollPos) { _local3 = Math.abs((_local2._y - minY) / (maxY - minY)); newY = _local1.maxProgY - (_local3 * (_local1.maxProgY - _local1.minProgY)); if ((newY > _local1.minProgY) && (newY < _local1.maxProgY)) { _local1._y = newY; } else { if (newY <= _local1.minProgY) { _local1._y = _local1.minProgY; } if (newY >= _local1.maxProgY) { _local1._y = _local1.maxProgY; } } _local1.curScrollPos = _local2._y; } } } var spinFrame = 1; var dragging = false;Instance of Symbol 50 MovieClip "scrollHandle" in Symbol 192 MovieClip Frame 1on (press) { _parent.dragging = true; this.startDrag(false, 522.7, 18, 522.7, 141.5); } on (release) { _parent.dragging = false; this.stopDrag(); } onClipEvent (mouseMove) { _parent.adjustScroll(18, 141.5, _parent.scrollText, this); }Symbol 216 MovieClip [tutorialScreen32] Frame 1var targetText = "this.onEnterFrame = function() { detectKeys(); }\n"; targetText = targetText + "function myObject(clip,speed){\n"; targetText = targetText + " this.clip = clip;\n"; targetText = targetText + " this.speed = speed;\n"; targetText = targetText + " this.face = 0;\n"; targetText = targetText + " this.jumpspeed = 0;\n"; targetText = targetText + "}\n"; targetText = targetText + "var stickObj1 = new myObject(stickMan1,3);\n"; targetText = targetText + "var activeCharacter = stickObj1;\n"; targetText = targetText + "function detectKeys(){\n"; targetText = targetText + " var pkey = \"\";\n"; targetText = targetText + " if (Key.isDown(Key.RIGHT)) { pkey += \"|1|\"; } \n"; targetText = targetText + " if (Key.isDown(Key.LEFT)) { pkey += \"|2|\"; }\n"; targetText = targetText + " if (Key.isDown(Key.UP)) { pkey += \"|3|\"; }\n"; targetText = targetText + " if (Key.isDown(Key.DOWN)) { pkey += \"|4|\"; }\n"; targetText = targetText + " actionRouting(pkey);\n"; targetText = targetText + "}\n"; targetText = targetText + "function actionRouting(pKey){\n"; targetText = targetText + " var dirX = 0;\n"; targetText = targetText + " if (pKey.indexOf(\"|1|\") != -1) { dirX = 1; }\n"; targetText = targetText + " if (pKey.indexOf(\"|2|\") != -1) { dirX = -1; }\n"; targetText = targetText + " moveObject(activeCharacter,dirX,1);\n"; targetText = targetText + "}\n"; targetText = targetText + "function moveObject(obj, dirX, dirY){\n"; targetText = targetText + " obj.clip._x += dirX * obj.speed;\n"; targetText = targetText + " if(dirX<0){ obj.clip.gotoAndStop(\"left\"); }\n"; targetText = targetText + " if(dirX>0){ obj.clip.gotoAndStop(\"right\"); }\n"; targetText = targetText + " if(dirX !=0){ obj.clip.anim.gotoAndStop(\"walk\"); }else{ obj.clip.anim.gotoAndStop(\"stand\"); }\n"; targetText = targetText + " floorTest = testFloors(obj);\n"; targetText = targetText + "\tif(floorTest == -1 || obj.jumpspeed<0) {\n"; targetText = targetText + "\t\tobj.clip._y += obj.jumpspeed;\n"; targetText = targetText + "\t\tobj.jumpspeed += gravity;\n"; targetText = targetText + "\t}else{\n"; targetText = targetText + "\t\tobj.clip._y = floorTest;\n"; targetText = targetText + "\t\tobj.jumpspeed = 0;\n"; targetText = targetText + "\t}\n"; targetText = targetText + "}\n"; targetText = targetText + "function testFloors(obj){\n"; targetText = targetText + " var aFloor;\n"; targetText = targetText + " var charY1 = obj.clip._y;\n"; targetText = targetText + " var charY2 = obj.clip._y + obj.jumpspeed;\n"; targetText = targetText + " var charX1 = obj.clip._x - obj.clip._width;\n"; targetText = targetText + " var charX2 = obj.clip._x;\n"; targetText = targetText + " var dex1 = Math.floor(charY1/sectionSize);\n"; targetText = targetText + " var dex2 = Math.floor(charY2/sectionSize);\n"; targetText = targetText + " var floorSect = new Array((dex2-dex1) + 1);\n"; targetText = targetText + " for(var j=0; j<floorSect.length; j++){\n"; targetText = targetText + " floorSect[j] = floorSet[dex1+j];\n"; targetText = targetText + " if(floorSect[j].floorDex>0){\n"; targetText = targetText + " for(var i=0; i<floorSect[j].floorDex; i++){\n"; targetText = targetText + " aFloor = floorSect[j].floorArr[i];\n"; targetText = targetText + " if(aFloor.y>=charY1 && aFloor.y<=charY2){\n"; targetText = targetText + " if(charX1>=aFloor.x1 && charX1<=aFloor.x2 || charX2>=aFloor.x1 && charX2<=aFloor.x2){\n"; targetText = targetText + " return aFloor.y;\n"; targetText = targetText + " }\n"; targetText = targetText + " }\n"; targetText = targetText + " }\n"; targetText = targetText + " }\n"; targetText = targetText + " }\n"; targetText = targetText + " return -1;\n"; targetText = targetText + "}\n"; targetText = targetText + "function floor(y,x1,x2){\n"; targetText = targetText + " this.y = y;\n"; targetText = targetText + " this.x1 = x1;\n"; targetText = targetText + " this.x2 = x2;\n"; targetText = targetText + "}\n"; targetText = targetText + "function addFloor(y,x1,x2){\n"; targetText = targetText + "\tthis.floorArr[this.floorDex] = new floor(y,x1,x2);\n"; targetText = targetText + "\tthis.floorDex ++;\n"; targetText = targetText + "}\n"; targetText = targetText + "function floorSection(){\n"; targetText = targetText + "\tthis.floorArr = new Array();\n"; targetText = targetText + "\tthis.floorDex = 0;\n"; targetText = targetText + "\tthis.addFloor = addFloor;\n"; targetText = targetText + "}\n"; targetText = targetText + "var sectionSize = 20;\n"; targetText = targetText + "var gameWidth = 320;\n"; targetText = targetText + "var gameHeight = 200;\n"; targetText = targetText + "var gravity = 2;\n"; targetText = targetText + "var i;\n"; targetText = targetText + "var floorSet = new Array(Math.floor(gameHeight/sectionSize)+1);\n"; targetText = targetText + "for (i=0; i<floorSet.length; i++) {\n"; targetText = targetText + "\tfloorSet[i] = new floorSection();\n"; targetText = targetText + "}\n"; targetText = targetText + "floorSet[Math.floor(80/sectionSize)].addFloor(80,16,116);\n"; targetText = targetText + "floorSet[Math.floor(190/sectionSize)].addFloor(190,0,320);\n";Symbol 219 MovieClip Frame 1function myObject(clip, speed) { var _local1 = this; _local1.clip = clip; _local1.speed = speed; _local1.jumpspeed = 0; } function detectKeys() { var _local1 = ""; if (Key.isDown(39)) { _local1 = _local1 + "|1|"; } if (Key.isDown(37)) { _local1 = _local1 + "|2|"; } if (Key.isDown(38)) { _local1 = _local1 + "|3|"; } if (Key.isDown(40)) { _local1 = _local1 + "|4|"; } actionRouting(_local1); } function actionRouting(pKey) { var _local1 = 0; if (pKey.indexOf("|1|") != -1) { _local1 = 1; } if (pKey.indexOf("|2|") != -1) { _local1 = -1; } moveObject(activeCharacter, _local1, 1); } function moveObject(obj, dirX, dirY) { var _local1 = obj; var _local2 = dirX; _local1.clip._x = _local1.clip._x + (_local2 * _local1.speed); if (_local2 < 0) { _local1.clip.gotoAndStop("left"); } if (_local2 > 0) { _local1.clip.gotoAndStop("right"); } if (_local2 != 0) { _local1.clip.anim.gotoAndStop("walk"); } else { _local1.clip.anim.gotoAndStop("stand"); } floorTest = testFloors(_local1); if ((floorTest == -1) || (_local1.jumpspeed < 0)) { _local1.clip._y = _local1.clip._y + _local1.jumpspeed; _local1.jumpspeed = _local1.jumpspeed + gravity; } else { _local1.clip._y = floorTest; _local1.jumpspeed = 0; } } function testFloors(obj) { var _local1; var charY1 = obj.clip._y; var charY2 = (obj.clip._y + obj.jumpspeed); var charX1 = (obj.clip._x - obj.clip._width); var charX2 = obj.clip._x; var dex1 = Math.floor(charY1 / sectionSize); var dex2 = Math.floor(charY2 / sectionSize); var floorSect = new Array((dex2 - dex1) + 1); var _local2 = 0; while (_local2 < floorSect.length) { floorSect[_local2] = floorSet[dex1 + _local2]; if (floorSect[_local2].floorDex > 0) { var _local3 = 0; while (_local3 < floorSect[_local2].floorDex) { _local1 = floorSect[_local2].floorArr[_local3]; if ((_local1.y >= charY1) && (_local1.y <= charY2)) { if (((charX1 >= _local1.x1) && (charX1 <= _local1.x2)) || ((charX2 >= _local1.x1) && (charX2 <= _local1.x2))) { return(_local1.y); } } _local3++; } } _local2++; } return(-1); } function floor(y, x1, x2) { var _local1 = this; _local1.y = y; _local1.x1 = x1; _local1.x2 = x2; } function addFloor(y, x1, x2) { var _local1 = this; _local1.floorArr[_local1.floorDex] = new floor(y, x1, x2); _local1.floorDex++; } function floorSection() { var _local1 = this; _local1.floorArr = new Array(); _local1.floorDex = 0; _local1.addFloor = addFloor; } this.onEnterFrame = function () { detectKeys(); }; var stickObj1 = new myObject(stickMan1, 3); var activeCharacter = stickObj1; var sectionSize = 20; var gameWidth = 320; var gameHeight = 200; var gravity = 2; var i; var floorSet = new Array(Math.floor(gameHeight / sectionSize) + 1); i = 0; while (i < floorSet.length) { floorSet[i] = new floorSection(); i++; } floorSet[Math.floor(80 / sectionSize)].addFloor(80, 16, 116); floorSet[Math.floor(190 / sectionSize)].addFloor(190, 0, 320);Symbol 226 MovieClip Frame 1function adjustScroll(minY, maxY, scrollWhat, scrollBar) { var _local1 = scrollWhat; var _local2 = scrollBar; if (dragging) { spinFrame = spinFrame + 1; if (spinFrame > 59) { spinFrame = 1; } _local2.gotoAndStop(spinFrame); if (((_local1.minProgY == null) || (_local1.minProgY == undefined)) || ((_local1.minProgY + "") == "")) { _local1.minProgY = _local1._y - (_local1._height * 0.75); _local1.maxProgY = _local1._y; _local1.curScrollPos = _local2._y; } var _local3; if (_local2._y != _local1.curScrollPos) { _local3 = Math.abs((_local2._y - minY) / (maxY - minY)); newY = _local1.maxProgY - (_local3 * (_local1.maxProgY - _local1.minProgY)); if ((newY > _local1.minProgY) && (newY < _local1.maxProgY)) { _local1._y = newY; } else { if (newY <= _local1.minProgY) { _local1._y = _local1.minProgY; } if (newY >= _local1.maxProgY) { _local1._y = _local1.maxProgY; } } _local1.curScrollPos = _local2._y; } } } var spinFrame = 1; var dragging = false;Instance of Symbol 50 MovieClip "scrollHandle" in Symbol 226 MovieClip Frame 1on (press) { _parent.dragging = true; this.startDrag(false, 522.7, 18, 522.7, 141.5); } on (release) { _parent.dragging = false; this.stopDrag(); } onClipEvent (mouseMove) { _parent.adjustScroll(18, 141.5, _parent.scrollText, this); }Symbol 232 MovieClip Frame 1function adjustScroll(minY, maxY, scrollWhat, scrollBar) { var _local1 = scrollWhat; var _local2 = scrollBar; if (dragging) { spinFrame = spinFrame + 1; if (spinFrame > 59) { spinFrame = 1; } _local2.gotoAndStop(spinFrame); if (((_local1.minProgY == null) || (_local1.minProgY == undefined)) || ((_local1.minProgY + "") == "")) { _local1.minProgY = _local1._y - (_local1._height * 0.75); _local1.maxProgY = _local1._y; _local1.curScrollPos = _local2._y; } var _local3; if (_local2._y != _local1.curScrollPos) { _local3 = Math.abs((_local2._y - minY) / (maxY - minY)); newY = _local1.maxProgY - (_local3 * (_local1.maxProgY - _local1.minProgY)); if ((newY > _local1.minProgY) && (newY < _local1.maxProgY)) { _local1._y = newY; } else { if (newY <= _local1.minProgY) { _local1._y = _local1.minProgY; } if (newY >= _local1.maxProgY) { _local1._y = _local1.maxProgY; } } _local1.curScrollPos = _local2._y; } } } var spinFrame = 1; var dragging = false;Instance of Symbol 50 MovieClip "scrollHandle" in Symbol 232 MovieClip Frame 1on (press) { _parent.dragging = true; this.startDrag(false, 522.7, 18, 522.7, 141.5); } on (release) { _parent.dragging = false; this.stopDrag(); } onClipEvent (mouseMove) { _parent.adjustScroll(18, 141.5, _parent.scrollText, this); }Symbol 281 MovieClip [tutorialScreen20] Frame 1function myObject(clip, speed) { var _local1 = this; _local1.clip = clip; _local1.speed = speed; _local1.face = 0; } function detectKeys() { var _local1 = ""; if (Key.isDown(39)) { _local1 = _local1 + "|1|"; } if (Key.isDown(37)) { _local1 = _local1 + "|2|"; } if (Key.isDown(38)) { _local1 = _local1 + "|3|"; } if (Key.isDown(40)) { _local1 = _local1 + "|4|"; } actionRouting(_local1); } function actionRouting(pKey) { var _local1 = 0; if (pKey.indexOf("|1|") != -1) { _local1 = 1; } if (pKey.indexOf("|2|") != -1) { _local1 = -1; } moveObject(activeCharacter, _local1, 1); } function moveObject(obj, dirX, dirY) { var _local1 = obj; var _local2 = dirX; _local1.clip._x = _local1.clip._x + (_local2 * _local1.speed); if (_local2 > 0) { _local1.clip.gotoAndStop("right"); _local1.face = 0; } if (_local2 < 0) { _local1.clip.gotoAndStop("left"); _local1.face = 1; } if (_local2 != 0) { _local1.clip.anim.gotoAndStop("walk"); } else { _local1.clip.anim.gotoAndStop("stand"); } } this.onEnterFrame = function () { detectKeys(); }; var stickObj1 = new myObject(stickMan1, 3); var activeCharacter = stickObj1; var targetText = "this.onEnterFrame = function() { detectKeys(); }\n"; targetText = targetText + "function myObject(clip,speed){\n"; targetText = targetText + " this.clip = clip;\n"; targetText = targetText + " this.speed = speed;\n"; targetText = targetText + " this.face = 0;\n"; targetText = targetText + "}\n"; targetText = targetText + "var stickObj1 = new myObject(stickMan1,3);\n"; targetText = targetText + "var activeCharacter = stickObj1;\n"; targetText = targetText + "function detectKeys(){\n"; targetText = targetText + " var pkey = \"\";\n"; targetText = targetText + " if (Key.isDown(Key.RIGHT)) { pkey += \"|1|\"; } \n"; targetText = targetText + " if (Key.isDown(Key.LEFT)) { pkey += \"|2|\"; }\n"; targetText = targetText + " if (Key.isDown(Key.UP)) { pkey += \"|3|\"; }\n"; targetText = targetText + " if (Key.isDown(Key.DOWN)) { pkey += \"|4|\"; }\n"; targetText = targetText + " actionRouting(pkey);\n"; targetText = targetText + "}\n"; targetText = targetText + "function actionRouting(pKey){\n"; targetText = targetText + " var dirX = 0;\n"; targetText = targetText + " if (pKey.indexOf(\"|1|\") != -1) { dirX = 1; }\n"; targetText = targetText + " if (pKey.indexOf(\"|2|\") != -1) { dirX = -1; }\n"; targetText = targetText + " moveObject(activeCharacter,dirX,1);\n"; targetText = targetText + "}\n"; targetText = targetText + "function moveObject(obj, dirX, dirY){\n"; targetText = targetText + " obj.clip._x += dirX * obj.speed;\n"; targetText = targetText + " if(dirX>0){ obj.clip.gotoAndStop(\"right\"); obj.face = 0; }\n"; targetText = targetText + " if(dirX<0){ obj.clip.gotoAndStop(\"left\"); obj.face = 1; }\n"; targetText = targetText + " if(dirX !=0){ obj.clip.anim.gotoAndStop(\"walk\"); }else{ obj.clip.anim.gotoAndStop(\"stand\"); }\n"; targetText = targetText + "}\n";Symbol 294 MovieClip [tutorialScreen17] Frame 1function myObject(clip, speed) { this.clip = clip; this.speed = speed; } function detectKeys() { var _local1 = ""; if (Key.isDown(39)) { _local1 = _local1 + "|1|"; } if (Key.isDown(37)) { _local1 = _local1 + "|2|"; } if (Key.isDown(38)) { _local1 = _local1 + "|3|"; } if (Key.isDown(40)) { _local1 = _local1 + "|4|"; } actionRouting(_local1); } function actionRouting(pKey) { var _local1 = 0; if (pKey.indexOf("|1|") != -1) { _local1 = 1; } if (pKey.indexOf("|2|") != -1) { _local1 = -1; } moveObject(activeCharacter, _local1, 1); } function moveObject(obj, dirX, dirY) { var _local1 = obj; _local1.clip._x = _local1.clip._x + (dirX * _local1.speed); if (dirX != 0) { _local1.clip.gotoAndStop("walk"); } else { _local1.clip.gotoAndStop("stand"); } } this.onEnterFrame = function () { detectKeys(); }; var stickObj1 = new myObject(stickMan1, 3); var activeCharacter = stickObj1;Symbol 305 MovieClip [tutorialScreen13] Frame 1function myObject(clip, speed) { this.clip = clip; this.speed = speed; } function detectKeys() { var _local1 = ""; if (Key.isDown(39)) { _local1 = _local1 + "|1|"; } if (Key.isDown(37)) { _local1 = _local1 + "|2|"; } if (Key.isDown(38)) { _local1 = _local1 + "|3|"; } if (Key.isDown(40)) { _local1 = _local1 + "|4|"; } actionRouting(_local1); } function actionRouting(pKey) { walk = false; if (pKey.indexOf("|1|") != -1) { activeCharacter.clip._x = activeCharacter.clip._x + activeCharacter.speed; walk = true; } if (pKey.indexOf("|2|") != -1) { activeCharacter.clip._x = activeCharacter.clip._x - activeCharacter.speed; walk = true; } if (walk) { activeCharacter.clip.gotoAndStop("walk"); } else { activeCharacter.clip.gotoAndStop("stand"); } } this.onEnterFrame = function () { detectKeys(); }; var stickObj1 = new myObject(stickMan1, 3); var activeCharacter = stickObj1;Symbol 327 Buttonon (rollOver) { _parent._parent._parent.screenContent("hard-coding"); } on (rollOut) { _parent._parent._parent.blankContent(); }Symbol 332 Buttonon (release) { activeCharacter = stickObj1; }Symbol 333 Buttonon (release) { activeCharacter = stickObj2; }Symbol 335 MovieClip [tutorialScreen9] Frame 1function myObject(clip, speed) { this.clip = clip; this.speed = speed; } function detectKeys() { var _local1 = ""; if (Key.isDown(39)) { _local1 = _local1 + "|1|"; } if (Key.isDown(37)) { _local1 = _local1 + "|2|"; } if (Key.isDown(38)) { _local1 = _local1 + "|3|"; } if (Key.isDown(40)) { _local1 = _local1 + "|4|"; } actionRouting(_local1); } function actionRouting(pKey) { if (pKey.indexOf("|1|") != -1) { activeCharacter.clip._x = activeCharacter.clip._x + activeCharacter.speed; } if (pKey.indexOf("|2|") != -1) { activeCharacter.clip._x = activeCharacter.clip._x - activeCharacter.speed; } } this.onEnterFrame = function () { detectKeys(); }; var stickObj1 = new myObject(stickMan1, 3); var stickObj2 = new myObject(stickMan2, 6); var activeCharacter = stickObj1;Symbol 339 MovieClip Frame 1function detectKeys() { var _local1 = ""; if (Key.isDown(39)) { _local1 = _local1 + "|1|"; } if (Key.isDown(37)) { _local1 = _local1 + "|2|"; } if (Key.isDown(38)) { _local1 = _local1 + "|3|"; } if (Key.isDown(40)) { _local1 = _local1 + "|4|"; } actionRouting(_local1); } function actionRouting(pKey) { if (pKey.indexOf("|1|") != -1) { stickMan._x = stickMan._x + 3; } if (pKey.indexOf("|2|") != -1) { stickMan._x = stickMan._x - 3; } } this.onEnterFrame = function () { detectKeys(); };Symbol 342 MovieClip [tutorialScreen7] Frame 1var targetText = "this.onEnterFrame = function() { detectKeys(); }\n"; targetText = targetText + "function detectKeys(){\n"; targetText = targetText + " var pkey = \"\";\n"; targetText = targetText + " if (Key.isDown(Key.RIGHT)) { pkey += \"|1|\"; } \n"; targetText = targetText + " if (Key.isDown(Key.LEFT)) { pkey += \"|2|\"; }\n"; targetText = targetText + " if (Key.isDown(Key.UP)) { pkey += \"|3|\"; }\n"; targetText = targetText + " if (Key.isDown(Key.DOWN)) { pkey += \"|4|\"; }\n"; targetText = targetText + " actionRouting(pkey);\n"; targetText = targetText + "}\n"; targetText = targetText + "function actionRouting(pKey){\n"; targetText = targetText + " if (pKey.indexOf(\"|1|\") != -1) { stickMan._x += 3; }\n"; targetText = targetText + " if (pKey.indexOf(\"|2|\") != -1) { stickMan._x -= 3; }\n"; targetText = targetText + "}\n";Symbol 370 Buttonon (rollOver) { _parent._parent._parent.screenContent("FPS"); } on (rollOut) { _parent._parent._parent.blankContent(); }Symbol 383 Buttonon (rollOver) { _parent._parent._parent.screenContent("this"); } on (rollOut) { _parent._parent._parent.blankContent(); }Symbol 387 Buttonon (rollOver) { _parent._parent._parent.screenContent("onEnterFrame"); } on (rollOut) { _parent._parent._parent.blankContent(); }Symbol 403 MovieClip Frame 23stop();Symbol 413 MovieClip [blip_clip] Frame 18stop();Instance of Symbol 415 MovieClip in Symbol 416 MovieClip [meteor_click_clip] Frame 1on (release) { _parent._parent._parent.launchMeteor(); }Symbol 419 MovieClip [meteor_crack_clip] Frame 1stop();Symbol 419 MovieClip [meteor_crack_clip] Frame 7this.removeMovieClip();Symbol 422 MovieClip [meteor_crater_clip] Frame 1stop();Symbol 422 MovieClip [meteor_crater_clip] Frame 7this.removeMovieClip();Symbol 438 MovieClip [explosion] Frame 21this.removeMovieClip();Symbol 438 MovieClip [explosion] Frame 22stop();Symbol 443 MovieClip Frame 1stop();Symbol 452 MovieClip Frame 30stop();Symbol 452 MovieClip Frame 65stop();Symbol 461 MovieClip Frame 1_parent.swapScreens(); stop();Symbol 461 MovieClip Frame 15_parent.canMoveForward = true; gotoAndPlay (1);Symbol 467 MovieClip Frame 1stop();Symbol 467 MovieClip Frame 13stop();Symbol 479 Buttonon (release) { _parent._parent.repairit.play(); }Symbol 481 MovieClip Frame 30_parent.moviePlayer("screen_mover", "movein"); _parent.moviePlayer("button_mover", "movein"); _parent.moviePlayer("progress_mover", "movein"); stop();Symbol 481 MovieClip Frame 31stop();Symbol 481 MovieClip Frame 86stop();Symbol 481 MovieClip Frame 97gotoAndStop ("fix");Symbol 497 MovieClip Frame 30stop();Symbol 499 MovieClip Frame 34stop();Symbol 502 MovieClip Frame 30stop();Symbol 504 MovieClip Frame 35stop();Symbol 508 MovieClip Frame 30stop();Symbol 512 MovieClip Frame 1stop();Symbol 512 MovieClip Frame 20stop();Symbol 512 MovieClip Frame 21_parent.screenDestroyed = true;Symbol 512 MovieClip Frame 100stop();Symbol 512 MovieClip Frame 117gotoAndStop ("fix");Symbol 514 MovieClip Frame 1stop();Symbol 514 MovieClip Frame 20stop();Symbol 514 MovieClip Frame 81stop();Symbol 514 MovieClip Frame 92gotoAndStop ("fix");Symbol 518 Buttonon (release) { if (_parent._parent.canMoveForward) { _parent._parent.canMoveForward = false; _parent._parent.nextScreen(); } }Symbol 519 MovieClip Frame 1stop();Symbol 525 Buttonon (release) { if (_parent._parent.canMoveForward) { _parent._parent.backScreen(); } }Symbol 532 Buttonon (release) { _parent._parent._parent._parent.meteor(); }Symbol 538 Buttonon (release) { _parent._parent._parent._parent.nuke(); }Symbol 540 MovieClip Frame 1stop();Symbol 540 MovieClip Frame 11stop();Symbol 546 Buttonon (release) { _parent.buttons.play(); }Symbol 547 MovieClip Frame 1stop();Symbol 555 MovieClip Frame 10_parent.play(); stop();Symbol 562 MovieClip Frame 10_parent.play(); stop();Symbol 568 MovieClip Frame 10_parent.play(); stop();Symbol 570 MovieClip Frame 1stop();Symbol 570 MovieClip Frame 20allButtons.buttons.gotoAndStop(_parent.disasterType); stop();Symbol 570 MovieClip Frame 21allButtons.buttons.gotoAndStop(_parent.disasterType); stop();Symbol 570 MovieClip Frame 26allButtons.buttons.gotoAndStop(_parent.disasterType);Symbol 570 MovieClip Frame 32allButtons.buttons.gotoAndStop(_parent.disasterType);Symbol 570 MovieClip Frame 38allButtons.buttons.gotoAndStop(_parent.disasterType);Symbol 570 MovieClip Frame 55stop();Symbol 570 MovieClip Frame 56allButtons.buttons.gotoAndStop(_parent.disasterType);Instance of Symbol 548 MovieClip "allButtons" in Symbol 570 MovieClip Frame 56onClipEvent (enterFrame) { this.buttons.gotoAndStop(_parent._parent.disasterType); }Symbol 570 MovieClip Frame 65gotoAndStop ("fix");Symbol 577 Buttonon (release) { _parent._parent.resetRootDisplay(); }Symbol 578 MovieClip Frame 15stop();Symbol 579 MovieClip Frame 1var theText = ""; stop();Symbol 579 MovieClip Frame 6rootText.text = theText; stop();Symbol 580 MovieClip Frame 1stop();Symbol 580 MovieClip Frame 20_parent.startTheMayhem();Symbol 610 MovieClip Frame 1stop();Symbol 610 MovieClip Frame 146stop();Symbol 612 MovieClip Frame 1function attachOneMark(x, y, depth, frame) { var _local1 = depth; var _local2 = _root; _local2.attachMovie("corner", "onecorner" + _local1, _local1); _local2["onecorner" + _local1]._x = x; _local2["onecorner" + _local1]._y = y; _local2["onecorner" + _local1].gotoAndStop(frame); } function toRad(deg) { return((deg / 180) * Math.PI); } function toDeg(rad) { return((rad / Math.PI) * 180); } function dist(x1, y1, x2, y2) { return(Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2))); } function returnAngle(tX, tY, x, y) { var _local1 = Math.acos((tX - x) / dist(tX, tY, x, y)); if (tY <= y) { return(toDeg(_local1)); } return(toDeg((Math.PI*2) - _local1)); } function returnFullRotation() { return(-1 * returnAngle(_parent._xmouse, _parent._ymouse, missle._x, missle._y)); } function determineDirection(angle1, angle2) { var _local2 = Math.abs(angle2 - angle1); var _local1 = (angle2 - angle1) / _local2; if ((360 - _local2) < _local2) { _local1 = -1 * _local1; } return(_local1); } function trackTarget() { var directionX; var _local2; var _local1; var _local3; var YComponent; _local2 = returnFullRotation(); if (Math.abs(_local2 - curRotation) >= turnDeg) { directionX = determineDirection(curRotation, _local2); _local1 = curRotation + (directionX * turnDeg); if (_local1 < -360) { _local1 = _local1 + 360; } if (_local1 > 0) { _local1 = _local1 - 360; } curRotation = _local1; } else { curRotation = _local2; } missle._rotation = curRotation; _local3 = Math.cos(toRad(curRotation)) * speed; yComponent = Math.sin(toRad(curRotation)) * speed; componentTotal = Math.abs(_local3) + Math.abs(yComponent); missle._x = missle._x + (speed * (_local3 / componentTotal)); missle._y = missle._y + (speed * (yComponent / componentTotal)); if (dist(missle._x + (35 * (_local3 / componentTotal)), missle._y + (35 * (yComponent / componentTotal)), _parent._xmouse, _parent._ymouse) < 10) { delete missile.onEnterFrame; _parent.attachExplosion(missle._x, missle._y, 0); _parent.exploders.play(); missle._rotation = 0; missle._x = 300; missle._y = 450; missle.jet.gotoAndPlay("stop"); } } var missle = this; var turnDeg = 25; var speed = 20; var curRotation = 0;Symbol 615 MovieClip Frame 1stop();Symbol 615 MovieClip Frame 5_parent.button_mover.gotoAndStop("fix"); _parent.screen_mover.gotoAndStop("fix"); _parent.progress_mover.gotoAndStop("fix"); _parent.border_mover.gotoAndStop("fix"); _parent.lines_mover.gotoAndStop("fix"); _parent.notesMove.gotoAndStop("fix"); _parent.exploders.meteor_click.removeMovieClip(); _parent.screens.blip.blip_clip0.removeMovieClip(); _parent.fall_in_repair.gotoAndStop(1); _parent.meteorDex = 0; _parent.mAttachTrack = 0; clearInterval(_parent.meteorInterval); _parent.meteorInterval = null; _parent.meteorTimeCount = 0; _parent.lowDex = 0; _parent.screenDestroyed = false; _parent.barDestroyed = false; _parent.buttonsDestroyed = false;
Library Items
Symbol 1 Graphic | Used by:25 | |
Symbol 2 Graphic | Used by:25 | |
Symbol 3 Graphic | Used by:25 | |
Symbol 4 Graphic | Used by:25 | |
Symbol 5 Graphic | Used by:25 | |
Symbol 6 Graphic | Used by:25 | |
Symbol 7 Graphic | Used by:25 | |
Symbol 8 Graphic | Used by:25 | |
Symbol 9 Graphic | Used by:25 | |
Symbol 10 Graphic | Used by:25 | |
Symbol 11 Graphic | Used by:25 | |
Symbol 12 Graphic | Used by:25 | |
Symbol 13 Graphic | Used by:25 | |
Symbol 14 Graphic | Used by:25 | |
Symbol 15 Graphic | Used by:25 | |
Symbol 16 Graphic | Used by:25 | |
Symbol 17 Graphic | Used by:25 | |
Symbol 18 Graphic | Used by:25 | |
Symbol 19 Graphic | Used by:25 | |
Symbol 20 Graphic | Used by:25 | |
Symbol 21 Graphic | Used by:25 | |
Symbol 22 Graphic | Used by:25 | |
Symbol 23 Graphic | Used by:25 | |
Symbol 24 Graphic | Used by:25 | |
Symbol 25 MovieClip [meteor] | Uses:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | |
Symbol 26 Graphic | Used by:38 42 55 83 87 90 98 102 106 111 120 127 131 138 142 145 147 149 151 153 187 193 210 212 214 216 221 227 233 236 239 249 254 258 272 276 281 283 292 294 296 298 301 305 313 321 328 335 337 342 359 371 375 388 393 406 415 461 | |
Symbol 27 Font | Used by:28 29 34 35 39 81 84 88 96 189 244 278 289 290 299 308 309 310 311 316 325 326 368 369 379 381 382 385 386 389 394 | |
Symbol 28 Text | Uses:27 | Used by:38 42 83 87 90 98 102 106 111 120 127 131 138 142 145 147 149 151 153 187 193 210 212 214 216 221 227 233 236 239 249 254 258 272 276 281 283 292 294 296 298 301 305 313 321 328 335 337 342 359 371 375 388 393 |
Symbol 29 Text | Uses:27 | Used by:38 342 359 371 375 388 |
Symbol 30 Font | Used by:31 32 40 41 79 82 85 86 89 91 94 97 99 101 103 105 107 108 110 114 116 117 118 119 121 123 128 133 137 139 141 143 144 146 148 150 152 154 180 181 186 188 189 194 197 198 199 200 201 202 203 204 205 206 207 208 211 213 215 217 220 222 223 228 229 234 235 237 238 241 242 243 248 250 251 252 253 255 256 257 259 261 262 263 264 265 266 267 268 269 270 273 274 275 279 280 282 285 288 289 290 291 293 295 297 300 303 304 307 308 309 312 315 319 320 322 329 330 331 334 336 338 340 341 346 347 348 349 350 351 352 353 356 357 358 360 362 364 365 366 372 373 374 376 391 392 396 397 398 399 400 401 402 444 445 572 | |
Symbol 31 Text | Uses:30 | Used by:38 |
Symbol 32 Text | Uses:30 | Used by:38 |
Symbol 33 Graphic | Used by:37 | |
Symbol 34 Text | Uses:27 | Used by:37 |
Symbol 35 Text | Uses:27 | Used by:37 |
Symbol 36 Graphic | Used by:37 327 370 383 387 | |
Symbol 37 Button | Uses:33 34 35 36 | Used by:38 |
Symbol 38 MovieClip [tutorialScreen4] | Uses:26 28 29 31 32 37 | |
Symbol 39 Text | Uses:27 | Used by:42 153 187 193 210 212 214 216 221 227 233 236 239 249 254 258 272 276 |
Symbol 40 Text | Uses:30 | Used by:42 |
Symbol 41 Text | Uses:30 | Used by:42 |
Symbol 42 MovieClip [tutorialScreen27] | Uses:26 28 39 40 41 | |
Symbol 43 Bitmap | Used by:46 446 | |
Symbol 44 Bitmap | Used by:46 | |
Symbol 45 Bitmap | Used by:46 | |
Symbol 46 Graphic | Uses:43 44 45 | Used by:51 |
Symbol 47 Graphic | Used by:48 | |
Symbol 48 MovieClip | Uses:47 | Used by:50 |
Symbol 49 Graphic | Used by:50 | |
Symbol 50 MovieClip | Uses:48 49 | Used by:51 126 136 192 226 232 |
Symbol 51 MovieClip | Uses:46 50 | Used by:55 481 |
Symbol 52 Bitmap | Used by:54 | |
Symbol 53 Bitmap | Used by:54 | |
Symbol 54 Graphic | Uses:52 53 | Used by:55 481 |
Symbol 55 MovieClip [meteorScreen] | Uses:26 51 54 | |
Symbol 56 Bitmap | Used by:57 177 218 | |
Symbol 57 Graphic | Uses:56 | Used by:80 92 179 272 |
Symbol 58 MovieClip | Used by:80 92 179 461 | |
Symbol 59 Bitmap | Used by:60 218 260 | |
Symbol 60 Graphic | Uses:59 | Used by:80 159 179 |
Symbol 61 Graphic | Used by:67 | |
Symbol 62 Graphic | Used by:67 | |
Symbol 63 Graphic | Used by:67 | |
Symbol 64 Graphic | Used by:67 | |
Symbol 65 Graphic | Used by:67 | |
Symbol 66 Graphic | Used by:67 | |
Symbol 67 MovieClip | Uses:61 62 63 64 65 66 | Used by:77 246 313 |
Symbol 68 Graphic | Used by:74 361 | |
Symbol 69 Graphic | Used by:74 361 | |
Symbol 70 Graphic | Used by:74 361 | |
Symbol 71 Graphic | Used by:74 361 | |
Symbol 72 Graphic | Used by:74 361 | |
Symbol 73 Graphic | Used by:74 361 | |
Symbol 74 MovieClip | Uses:68 69 70 71 72 73 | Used by:77 313 321 335 339 |
Symbol 75 Graphic | Used by:76 | |
Symbol 76 MovieClip | Uses:75 | Used by:77 120 |
Symbol 77 MovieClip | Uses:67 74 76 | Used by:78 294 305 |
Symbol 78 MovieClip | Uses:77 | Used by:80 92 179 219 281 |
Symbol 79 Text | Uses:30 | Used by:80 179 |
Symbol 80 MovieClip | Uses:57 58 60 78 79 | Used by:83 |
Symbol 81 Text | Uses:27 | Used by:83 127 131 138 142 145 147 149 151 |
Symbol 82 Text | Uses:30 | Used by:83 |
Symbol 83 MovieClip [tutorialScreen47] | Uses:26 80 28 81 82 | |
Symbol 84 Text | Uses:27 | Used by:87 |
Symbol 85 Text | Uses:30 | Used by:87 |
Symbol 86 Text | Uses:30 | Used by:87 |
Symbol 87 MovieClip [tutorialScreen54] | Uses:26 28 84 85 86 | |
Symbol 88 Text | Uses:27 | Used by:90 |
Symbol 89 Text | Uses:30 | Used by:90 |
Symbol 90 MovieClip [tutorialScreen53] | Uses:26 28 88 89 | |
Symbol 91 Text | Uses:30 | Used by:92 |
Symbol 92 MovieClip | Uses:57 58 78 91 | Used by:98 |
Symbol 93 Graphic | Used by:95 | |
Symbol 94 Text | Uses:30 | Used by:95 |
Symbol 95 Button | Uses:93 94 | Used by:98 216 281 342 |
Symbol 96 Text | Uses:27 | Used by:98 102 106 111 120 |
Symbol 97 Text | Uses:30 | Used by:98 |
Symbol 98 MovieClip [tutorialScreen52] | Uses:26 92 95 28 96 97 | |
Symbol 99 Text | Uses:30 | Used by:102 |
Symbol 100 Graphic | Used by:102 | |
Symbol 101 Text | Uses:30 | Used by:102 |
Symbol 102 MovieClip [tutorialScreen51] | Uses:26 99 100 28 96 101 | |
Symbol 103 Text | Uses:30 | Used by:106 |
Symbol 104 Graphic | Used by:106 | |
Symbol 105 Text | Uses:30 | Used by:106 |
Symbol 106 MovieClip [tutorialScreen50] | Uses:26 103 104 28 96 105 | |
Symbol 107 Text | Uses:30 | Used by:111 |
Symbol 108 Text | Uses:30 | Used by:111 |
Symbol 109 Graphic | Used by:111 | |
Symbol 110 Text | Uses:30 | Used by:111 |
Symbol 111 MovieClip [tutorialScreen49] | Uses:26 107 108 109 28 96 110 | |
Symbol 112 Bitmap | Used by:113 | |
Symbol 113 Graphic | Uses:112 | Used by:120 |
Symbol 114 Text | Uses:30 | Used by:120 |
Symbol 115 Graphic | Used by:120 361 371 | |
Symbol 116 Text | Uses:30 | Used by:120 |
Symbol 117 Text | Uses:30 | Used by:120 |
Symbol 118 Text | Uses:30 | Used by:120 |
Symbol 119 Text | Uses:30 | Used by:120 |
Symbol 120 MovieClip [tutorialScreen48] | Uses:26 113 28 96 114 115 76 116 117 118 119 | |
Symbol 121 Text | Uses:30 | Used by:127 |
Symbol 122 Graphic | Used by:126 192 226 232 | |
Symbol 123 Text | Uses:30 | Used by:124 |
Symbol 124 MovieClip | Uses:123 | Used by:126 |
Symbol 125 Graphic | Used by:126 | |
Symbol 126 MovieClip | Uses:122 124 125 50 | Used by:127 |
Symbol 127 MovieClip [tutorialScreen46] | Uses:26 28 81 121 126 | |
Symbol 128 Text | Uses:30 | Used by:131 |
Symbol 129 Bitmap | Used by:130 | |
Symbol 130 Graphic | Uses:129 | Used by:131 |
Symbol 131 MovieClip [tutorialScreen45] | Uses:26 28 81 128 130 | |
Symbol 132 Graphic | Used by:136 | |
Symbol 133 Text | Uses:30 | Used by:134 |
Symbol 134 MovieClip | Uses:133 | Used by:136 |
Symbol 135 Graphic | Used by:136 | |
Symbol 136 MovieClip | Uses:132 134 135 50 | Used by:138 |
Symbol 137 Text | Uses:30 | Used by:138 |
Symbol 138 MovieClip [tutorialScreen44] | Uses:26 136 28 81 137 | |
Symbol 139 Text | Uses:30 | Used by:142 |
Symbol 140 Graphic | Used by:142 | |
Symbol 141 Text | Uses:30 | Used by:142 |
Symbol 142 MovieClip [tutorialScreen43] | Uses:26 139 140 28 81 141 | |
Symbol 143 Text | Uses:30 | Used by:145 |
Symbol 144 Text | Uses:30 | Used by:145 |
Symbol 145 MovieClip [tutorialScreen42] | Uses:26 28 81 143 144 | |
Symbol 146 Text | Uses:30 | Used by:147 |
Symbol 147 MovieClip [tutorialScreen41] | Uses:26 28 81 146 | |
Symbol 148 Text | Uses:30 | Used by:149 |
Symbol 149 MovieClip [tutorialScreen40] | Uses:26 28 81 148 | |
Symbol 150 Text | Uses:30 | Used by:151 |
Symbol 151 MovieClip [tutorialScreen39] | Uses:26 28 81 150 | |
Symbol 152 Text | Uses:30 | Used by:153 |
Symbol 153 MovieClip [tutorialScreen38] | Uses:26 28 39 152 | |
Symbol 154 Text | Uses:30 | Used by:187 |
Symbol 155 Graphic | Used by:187 | |
Symbol 156 Graphic | Used by:158 | |
Symbol 157 Graphic | Used by:158 | |
Symbol 158 MovieClip | Uses:156 157 | Used by:187 |
Symbol 159 MovieClip [cave_floor] | Uses:60 | Used by:187 212 |
Symbol 160 Graphic | Used by:174 | |
Symbol 161 Bitmap | Used by:162 | |
Symbol 162 Graphic | Uses:161 | Used by:172 |
Symbol 163 Bitmap | Used by:164 | |
Symbol 164 Graphic | Uses:163 | Used by:172 |
Symbol 165 Bitmap | Used by:166 | |
Symbol 166 Graphic | Uses:165 | Used by:172 |
Symbol 167 Bitmap | Used by:168 | |
Symbol 168 Graphic | Uses:167 | Used by:172 |
Symbol 169 Bitmap | Used by:170 | |
Symbol 170 Graphic | Uses:169 | Used by:172 |
Symbol 171 Sound | Used by:172 | |
Symbol 172 MovieClip | Uses:162 164 166 168 170 171 | Used by:174 612 |
Symbol 173 Graphic | Used by:174 | |
Symbol 174 MovieClip [scifi_floor] | Uses:160 172 173 | Used by:187 212 414 |
Symbol 175 Graphic | Used by:176 | |
Symbol 176 MovieClip [vector_floor] | Uses:175 | Used by:187 212 |
Symbol 177 Graphic | Uses:56 | Used by:178 |
Symbol 178 MovieClip | Uses:177 | Used by:187 |
Symbol 179 MovieClip | Uses:57 58 60 78 79 | Used by:187 |
Symbol 180 Text | Uses:30 | Used by:187 |
Symbol 181 Text | Uses:30 | Used by:187 |
Symbol 182 Graphic | Used by:185 332 333 | |
Symbol 183 Graphic | Used by:185 332 333 | |
Symbol 184 Graphic | Used by:185 332 333 | |
Symbol 185 Button | Uses:182 183 184 | Used by:187 |
Symbol 186 Text | Uses:30 | Used by:187 |
Symbol 187 MovieClip [tutorialScreen37] | Uses:26 28 39 154 155 158 159 174 176 178 179 180 181 185 186 | |
Symbol 188 Text | Uses:30 | Used by:193 |
Symbol 189 Text | Uses:30 27 | Used by:190 |
Symbol 190 MovieClip | Uses:189 | Used by:192 |
Symbol 191 Graphic | Used by:192 | |
Symbol 192 MovieClip | Uses:122 190 191 50 | Used by:193 |
Symbol 193 MovieClip [tutorialScreen36] | Uses:26 28 39 188 192 | |
Symbol 194 Text | Uses:30 | Used by:210 |
Symbol 195 Bitmap | Used by:196 | |
Symbol 196 Graphic | Uses:195 | Used by:209 |
Symbol 197 Text | Uses:30 | Used by:209 |
Symbol 198 Text | Uses:30 | Used by:209 |
Symbol 199 Text | Uses:30 | Used by:209 |
Symbol 200 Text | Uses:30 | Used by:209 |
Symbol 201 Text | Uses:30 | Used by:209 |
Symbol 202 Text | Uses:30 | Used by:209 |
Symbol 203 Text | Uses:30 | Used by:209 |
Symbol 204 Text | Uses:30 | Used by:209 |
Symbol 205 Text | Uses:30 | Used by:209 |
Symbol 206 Text | Uses:30 | Used by:209 |
Symbol 207 Text | Uses:30 | Used by:209 |
Symbol 208 Text | Uses:30 | Used by:209 |
Symbol 209 MovieClip | Uses:196 197 198 199 200 201 202 203 204 205 206 207 208 | Used by:210 |
Symbol 210 MovieClip [tutorialScreen35] | Uses:26 28 39 194 209 | |
Symbol 211 Text | Uses:30 | Used by:212 |
Symbol 212 MovieClip [tutorialScreen34] | Uses:26 28 39 211 176 159 174 | |
Symbol 213 Text | Uses:30 | Used by:214 |
Symbol 214 MovieClip [tutorialScreen33] | Uses:26 28 39 213 | |
Symbol 215 Text | Uses:30 | Used by:216 |
Symbol 216 MovieClip [tutorialScreen32] | Uses:26 28 39 215 95 | |
Symbol 217 Text | Uses:30 | Used by:221 |
Symbol 218 Graphic | Uses:59 56 | Used by:219 |
Symbol 219 MovieClip | Uses:218 78 | Used by:221 |
Symbol 220 Text | Uses:30 | Used by:221 |
Symbol 221 MovieClip [tutorialScreen31] | Uses:26 28 39 217 219 220 | |
Symbol 222 Text | Uses:30 | Used by:227 |
Symbol 223 Text | Uses:30 | Used by:224 |
Symbol 224 MovieClip | Uses:223 | Used by:226 |
Symbol 225 Graphic | Used by:226 | |
Symbol 226 MovieClip | Uses:122 224 225 50 | Used by:227 |
Symbol 227 MovieClip [tutorialScreen30] | Uses:26 28 39 222 226 | |
Symbol 228 Text | Uses:30 | Used by:233 |
Symbol 229 Text | Uses:30 | Used by:230 |
Symbol 230 MovieClip | Uses:229 | Used by:232 |
Symbol 231 Graphic | Used by:232 | |
Symbol 232 MovieClip | Uses:122 230 231 50 | Used by:233 |
Symbol 233 MovieClip [tutorialScreen29] | Uses:26 28 39 228 232 | |
Symbol 234 Text | Uses:30 | Used by:236 |
Symbol 235 Text | Uses:30 | Used by:236 |
Symbol 236 MovieClip [tutorialScreen28] | Uses:26 28 39 234 235 | |
Symbol 237 Text | Uses:30 | Used by:239 |
Symbol 238 Text | Uses:30 | Used by:239 |
Symbol 239 MovieClip [tutorialScreen26] | Uses:26 28 39 237 238 | |
Symbol 240 Graphic | Used by:249 | |
Symbol 241 Text | Uses:30 | Used by:246 |
Symbol 242 Text | Uses:30 | Used by:246 |
Symbol 243 Text | Uses:30 | Used by:246 |
Symbol 244 Text | Uses:27 | Used by:245 |
Symbol 245 MovieClip | Uses:244 | Used by:246 |
Symbol 246 MovieClip | Uses:67 241 242 243 245 | Used by:249 |
Symbol 247 Graphic | Used by:249 | |
Symbol 248 Text | Uses:30 | Used by:249 |
Symbol 249 MovieClip [tutorialScreen25] | Uses:26 240 28 39 246 247 248 | |
Symbol 250 Text | Uses:30 | Used by:254 |
Symbol 251 Text | Uses:30 | Used by:254 |
Symbol 252 Text | Uses:30 | Used by:254 |
Symbol 253 Text | Uses:30 | Used by:254 |
Symbol 254 MovieClip [tutorialScreen24] | Uses:26 28 39 250 251 252 253 | |
Symbol 255 Text | Uses:30 | Used by:258 |
Symbol 256 Text | Uses:30 | Used by:258 |
Symbol 257 Text | Uses:30 | Used by:258 |
Symbol 258 MovieClip [tutorialScreen23] | Uses:26 28 39 255 256 257 | |
Symbol 259 Text | Uses:30 | Used by:272 |
Symbol 260 Graphic | Uses:59 | Used by:272 |
Symbol 261 Text | Uses:30 | Used by:272 |
Symbol 262 Text | Uses:30 | Used by:272 |
Symbol 263 Text | Uses:30 | Used by:272 |
Symbol 264 Text | Uses:30 | Used by:272 |
Symbol 265 Text | Uses:30 | Used by:272 |
Symbol 266 Text | Uses:30 | Used by:272 |
Symbol 267 Text | Uses:30 | Used by:272 |
Symbol 268 Text | Uses:30 | Used by:272 |
Symbol 269 Text | Uses:30 | Used by:272 |
Symbol 270 Text | Uses:30 | Used by:272 |
Symbol 271 Graphic | Used by:272 | |
Symbol 272 MovieClip [tutorialScreen22] | Uses:26 57 28 39 259 260 261 262 263 264 265 266 267 268 269 270 271 | |
Symbol 273 Text | Uses:30 | Used by:276 |
Symbol 274 Text | Uses:30 | Used by:276 |
Symbol 275 Text | Uses:30 | Used by:276 |
Symbol 276 MovieClip [tutorialScreen21] | Uses:26 28 39 273 274 275 | |
Symbol 277 Graphic | Used by:281 | |
Symbol 278 Text | Uses:27 | Used by:281 283 292 294 296 298 |
Symbol 279 Text | Uses:30 | Used by:281 |
Symbol 280 Text | Uses:30 | Used by:281 |
Symbol 281 MovieClip [tutorialScreen20] | Uses:26 277 28 278 279 78 95 280 | |
Symbol 282 Text | Uses:30 | Used by:283 |
Symbol 283 MovieClip [tutorialScreen19] | Uses:26 28 278 282 | |
Symbol 284 Graphic | Used by:292 | |
Symbol 285 Text | Uses:30 | Used by:292 |
Symbol 286 Bitmap | Used by:287 | |
Symbol 287 Graphic | Uses:286 | Used by:292 313 |
Symbol 288 Text | Uses:30 | Used by:292 313 |
Symbol 289 Text | Uses:27 30 | Used by:292 |
Symbol 290 Text | Uses:27 30 | Used by:292 |
Symbol 291 Text | Uses:30 | Used by:292 |
Symbol 292 MovieClip [tutorialScreen18] | Uses:26 284 28 278 285 287 288 289 290 291 | |
Symbol 293 Text | Uses:30 | Used by:294 |
Symbol 294 MovieClip [tutorialScreen17] | Uses:26 28 278 293 77 | |
Symbol 295 Text | Uses:30 | Used by:296 |
Symbol 296 MovieClip [tutorialScreen16] | Uses:26 28 278 295 | |
Symbol 297 Text | Uses:30 | Used by:298 |
Symbol 298 MovieClip [tutorialScreen15] | Uses:26 28 278 297 | |
Symbol 299 Text | Uses:27 | Used by:301 305 313 321 328 335 337 |
Symbol 300 Text | Uses:30 | Used by:301 |
Symbol 301 MovieClip [tutorialScreen14] | Uses:26 28 299 300 | |
Symbol 302 Graphic | Used by:305 | |
Symbol 303 Text | Uses:30 | Used by:305 |
Symbol 304 Text | Uses:30 | Used by:305 |
Symbol 305 MovieClip [tutorialScreen13] | Uses:26 302 28 299 303 77 304 | |
Symbol 306 Graphic | Used by:313 | |
Symbol 307 Text | Uses:30 | Used by:313 |
Symbol 308 Text | Uses:27 30 | Used by:313 |
Symbol 309 Text | Uses:27 30 | Used by:313 |
Symbol 310 Text | Uses:27 | Used by:313 |
Symbol 311 Text | Uses:27 | Used by:313 321 |
Symbol 312 Text | Uses:30 | Used by:313 |
Symbol 313 MovieClip [tutorialScreen12] | Uses:26 306 28 299 307 287 288 308 309 67 310 74 311 312 | |
Symbol 314 Graphic | Used by:321 | |
Symbol 315 Text | Uses:30 | Used by:321 |
Symbol 316 Text | Uses:27 | Used by:321 |
Symbol 317 Bitmap | Used by:318 | |
Symbol 318 Graphic | Uses:317 | Used by:321 |
Symbol 319 Text | Uses:30 | Used by:321 |
Symbol 320 Text | Uses:30 | Used by:321 |
Symbol 321 MovieClip [tutorialScreen11] | Uses:26 314 28 299 315 74 311 316 318 319 320 | |
Symbol 322 Text | Uses:30 | Used by:328 |
Symbol 323 Graphic | Used by:328 | |
Symbol 324 Graphic | Used by:327 | |
Symbol 325 Text | Uses:27 | Used by:327 |
Symbol 326 Text | Uses:27 | Used by:327 |
Symbol 327 Button | Uses:324 325 326 36 | Used by:328 |
Symbol 328 MovieClip [tutorialScreen10] | Uses:26 28 299 322 323 327 | |
Symbol 329 Text | Uses:30 | Used by:335 |
Symbol 330 Text | Uses:30 | Used by:335 |
Symbol 331 Text | Uses:30 | Used by:335 |
Symbol 332 Button | Uses:182 183 184 | Used by:335 |
Symbol 333 Button | Uses:182 183 184 | Used by:335 |
Symbol 334 Text | Uses:30 | Used by:335 |
Symbol 335 MovieClip [tutorialScreen9] | Uses:26 28 299 329 74 330 331 332 333 334 | |
Symbol 336 Text | Uses:30 | Used by:337 |
Symbol 337 MovieClip [tutorialScreen8] | Uses:26 28 299 336 | |
Symbol 338 Text | Uses:30 | Used by:342 |
Symbol 339 MovieClip | Uses:74 | Used by:342 |
Symbol 340 Text | Uses:30 | Used by:342 |
Symbol 341 Text | Uses:30 | Used by:342 |
Symbol 342 MovieClip [tutorialScreen7] | Uses:26 28 29 338 339 95 340 341 | |
Symbol 343 Bitmap | Used by:344 | |
Symbol 344 Graphic | Uses:343 | Used by:354 |
Symbol 345 Graphic | Used by:354 | |
Symbol 346 Text | Uses:30 | Used by:354 |
Symbol 347 Text | Uses:30 | Used by:354 |
Symbol 348 Text | Uses:30 | Used by:354 |
Symbol 349 Text | Uses:30 | Used by:354 |
Symbol 350 Text | Uses:30 | Used by:354 |
Symbol 351 Text | Uses:30 | Used by:354 |
Symbol 352 Text | Uses:30 | Used by:354 |
Symbol 353 Text | Uses:30 | Used by:354 |
Symbol 354 MovieClip | Uses:344 345 346 347 348 349 350 351 352 353 | Used by:359 |
Symbol 355 Graphic | Used by:359 | |
Symbol 356 Text | Uses:30 | Used by:359 |
Symbol 357 Text | Uses:30 | Used by:359 |
Symbol 358 Text | Uses:30 | Used by:359 |
Symbol 359 MovieClip [tutorialScreen6] | Uses:26 354 355 28 29 356 357 358 | |
Symbol 360 Text | Uses:30 | Used by:371 |
Symbol 361 MovieClip | Uses:115 68 69 70 71 72 73 | Used by:371 |
Symbol 362 Text | Uses:30 | Used by:371 |
Symbol 363 Graphic | Used by:371 | |
Symbol 364 Text | Uses:30 | Used by:371 |
Symbol 365 Text | Uses:30 | Used by:371 |
Symbol 366 Text | Uses:30 | Used by:371 |
Symbol 367 Graphic | Used by:370 | |
Symbol 368 Text | Uses:27 | Used by:370 |
Symbol 369 Text | Uses:27 | Used by:370 |
Symbol 370 Button | Uses:367 368 369 36 | Used by:371 |
Symbol 371 MovieClip [tutorialScreen5] | Uses:26 28 29 360 115 361 362 363 364 365 366 370 | |
Symbol 372 Text | Uses:30 | Used by:375 |
Symbol 373 Text | Uses:30 | Used by:375 |
Symbol 374 Text | Uses:30 | Used by:375 |
Symbol 375 MovieClip [tutorialScreen3] | Uses:26 28 29 372 373 374 | |
Symbol 376 Text | Uses:30 | Used by:388 |
Symbol 377 Bitmap | Used by:378 | |
Symbol 378 Graphic | Uses:377 | Used by:388 |
Symbol 379 Text | Uses:27 | Used by:388 |
Symbol 380 Graphic | Used by:383 | |
Symbol 381 Text | Uses:27 | Used by:383 |
Symbol 382 Text | Uses:27 | Used by:383 |
Symbol 383 Button | Uses:380 381 382 36 | Used by:388 |
Symbol 384 Graphic | Used by:387 | |
Symbol 385 Text | Uses:27 | Used by:387 |
Symbol 386 Text | Uses:27 | Used by:387 |
Symbol 387 Button | Uses:384 385 386 36 | Used by:388 |
Symbol 388 MovieClip [tutorialScreen2] | Uses:26 28 29 376 378 379 383 387 | |
Symbol 389 Text | Uses:27 | Used by:393 |
Symbol 390 Font | Used by:391 | |
Symbol 391 Text | Uses:30 390 | Used by:393 |
Symbol 392 Text | Uses:30 | Used by:393 |
Symbol 393 MovieClip [tutorialScreen1] | Uses:26 28 389 391 392 | |
Symbol 394 Text | Uses:27 | Used by:406 |
Symbol 395 Graphic | Used by:403 | |
Symbol 396 Text | Uses:30 | Used by:403 |
Symbol 397 Text | Uses:30 | Used by:403 |
Symbol 398 Text | Uses:30 | Used by:403 |
Symbol 399 Text | Uses:30 | Used by:403 |
Symbol 400 Text | Uses:30 | Used by:403 |
Symbol 401 Text | Uses:30 | Used by:403 |
Symbol 402 Text | Uses:30 | Used by:403 |
Symbol 403 MovieClip | Uses:395 396 397 398 399 400 401 402 | Used by:406 |
Symbol 404 Bitmap | Used by:405 516 | |
Symbol 405 Graphic | Uses:404 | Used by:406 518 549 |
Symbol 406 MovieClip [tutorialScreen0] | Uses:26 394 403 405 | |
Symbol 407 Graphic | Used by:408 | |
Symbol 408 MovieClip [corner] | Uses:407 | |
Symbol 409 Graphic | Used by:413 | |
Symbol 410 ShapeTweening | Used by:413 | |
Symbol 411 ShapeTweening | Used by:413 | |
Symbol 412 Graphic | Used by:413 | |
Symbol 413 MovieClip [blip_clip] | Uses:409 410 411 412 | |
Symbol 414 MovieClip [moving_scifi_floor] | Uses:174 | |
Symbol 415 MovieClip | Uses:26 | Used by:416 |
Symbol 416 MovieClip [meteor_click_clip] | Uses:415 | |
Symbol 417 Bitmap | Used by:418 | |
Symbol 418 Graphic | Uses:417 | Used by:419 |
Symbol 419 MovieClip [meteor_crack_clip] | Uses:418 | |
Symbol 420 Bitmap | Used by:421 | |
Symbol 421 Graphic | Uses:420 | Used by:422 |
Symbol 422 MovieClip [meteor_crater_clip] | Uses:421 | |
Symbol 423 Bitmap | Used by:424 | |
Symbol 424 Graphic | Uses:423 | Used by:438 |
Symbol 425 Sound | Used by:438 | |
Symbol 426 Bitmap | Used by:427 | |
Symbol 427 Graphic | Uses:426 | Used by:438 |
Symbol 428 Bitmap | Used by:429 | |
Symbol 429 Graphic | Uses:428 | Used by:438 |
Symbol 430 Bitmap | Used by:431 | |
Symbol 431 Graphic | Uses:430 | Used by:438 |
Symbol 432 Bitmap | Used by:433 | |
Symbol 433 Graphic | Uses:432 | Used by:438 |
Symbol 434 Bitmap | Used by:435 | |
Symbol 435 Graphic | Uses:434 | Used by:438 |
Symbol 436 Bitmap | Used by:437 | |
Symbol 437 Graphic | Uses:436 | Used by:438 |
Symbol 438 MovieClip [explosion] | Uses:424 425 427 429 431 433 435 437 | Used by:580 |
Symbol 439 ShapeTweening | Used by:443 | |
Symbol 440 Bitmap | Used by:441 | |
Symbol 441 Graphic | Uses:440 | Used by:443 |
Symbol 442 Graphic | Used by:443 | |
Symbol 443 MovieClip | Uses:439 441 442 | Used by:514 Timeline |
Symbol 444 Text | Uses:30 | Used by:Timeline |
Symbol 445 Text | Uses:30 | Used by:Timeline |
Symbol 446 Graphic | Uses:43 | Used by:451 |
Symbol 447 Graphic | Used by:451 | |
Symbol 448 Font | Used by:449 484 | |
Symbol 449 EditableText | Uses:448 | Used by:450 |
Symbol 450 MovieClip | Uses:449 | Used by:451 |
Symbol 451 MovieClip | Uses:446 447 450 | Used by:452 |
Symbol 452 MovieClip | Uses:451 | Used by:Timeline |
Symbol 453 Graphic | Used by:461 Timeline | |
Symbol 454 ShapeTweening | Used by:461 | |
Symbol 455 ShapeTweening | Used by:461 | |
Symbol 456 Graphic | Used by:457 | |
Symbol 457 MovieClip | Uses:456 | Used by:461 |
Symbol 458 Sound | Used by:461 | |
Symbol 459 Graphic | Used by:461 | |
Symbol 460 Graphic | Used by:461 | |
Symbol 461 MovieClip | Uses:26 454 58 455 453 457 458 459 460 | Used by:Timeline |
Symbol 462 Graphic | Used by:463 464 465 466 | |
Symbol 463 MovieClip | Uses:462 | Used by:467 |
Symbol 464 MovieClip | Uses:462 | Used by:467 |
Symbol 465 MovieClip | Uses:462 | Used by:467 |
Symbol 466 MovieClip | Uses:462 | Used by:467 |
Symbol 467 MovieClip | Uses:463 464 465 466 | Used by:Timeline |
Symbol 468 Sound | Used by:481 | |
Symbol 469 Sound | Used by:481 | |
Symbol 470 Bitmap | Used by:471 | |
Symbol 471 Graphic | Uses:470 | Used by:480 519 526 533 539 555 562 |
Symbol 472 Bitmap | Used by:473 475 476 | |
Symbol 473 Graphic | Uses:472 | Used by:479 |
Symbol 474 Bitmap | Used by:475 476 | |
Symbol 475 Graphic | Uses:472 474 | Used by:479 |
Symbol 476 Graphic | Uses:472 474 | Used by:479 |
Symbol 477 Graphic | Used by:479 | |
Symbol 478 Sound | Used by:479 518 525 532 538 546 549 556 | |
Symbol 479 Button | Uses:473 475 476 477 478 | Used by:480 |
Symbol 480 MovieClip | Uses:471 479 | Used by:481 610 |
Symbol 481 MovieClip | Uses:51 54 468 469 480 | Used by:Timeline |
Symbol 482 Bitmap | Used by:483 490 495 496 498 500 501 503 505 507 511 | |
Symbol 483 Graphic | Uses:482 | Used by:487 |
Symbol 484 EditableText | Uses:448 | Used by:487 |
Symbol 485 Bitmap | Used by:486 | |
Symbol 486 Graphic | Uses:485 | Used by:487 |
Symbol 487 MovieClip | Uses:483 484 486 | Used by:512 |
Symbol 488 Sound | Used by:512 514 570 | |
Symbol 489 Graphic | Used by:512 | |
Symbol 490 Graphic | Uses:482 | Used by:512 |
Symbol 491 Graphic | Used by:512 | |
Symbol 492 Graphic | Used by:512 | |
Symbol 493 Sound | Used by:512 | |
Symbol 494 Graphic | Used by:512 | |
Symbol 495 Graphic | Uses:482 | Used by:512 |
Symbol 496 Graphic | Uses:482 | Used by:497 |
Symbol 497 MovieClip | Uses:496 | Used by:512 |
Symbol 498 Graphic | Uses:482 | Used by:499 |
Symbol 499 MovieClip | Uses:498 | Used by:512 |
Symbol 500 Graphic | Uses:482 | Used by:512 |
Symbol 501 Graphic | Uses:482 | Used by:502 |
Symbol 502 MovieClip | Uses:501 | Used by:512 |
Symbol 503 Graphic | Uses:482 | Used by:504 |
Symbol 504 MovieClip | Uses:503 | Used by:512 |
Symbol 505 Graphic | Uses:482 | Used by:512 |
Symbol 506 Graphic | Used by:512 | |
Symbol 507 Graphic | Uses:482 | Used by:508 |
Symbol 508 MovieClip | Uses:507 | Used by:512 |
Symbol 509 Graphic | Used by:512 | |
Symbol 510 Graphic | Used by:512 | |
Symbol 511 Graphic | Uses:482 | Used by:512 |
Symbol 512 MovieClip | Uses:487 488 489 490 491 492 493 494 495 497 499 500 502 504 505 506 508 509 510 511 | Used by:Timeline |
Symbol 513 Sound | Used by:514 | |
Symbol 514 MovieClip | Uses:443 488 513 | Used by:Timeline |
Symbol 515 Bitmap | Used by:516 | |
Symbol 516 Graphic | Uses:404 515 | Used by:518 549 |
Symbol 517 Graphic | Used by:518 532 538 549 | |
Symbol 518 Button | Uses:405 516 517 478 | Used by:519 |
Symbol 519 MovieClip | Uses:471 518 | Used by:570 |
Symbol 520 Bitmap | Used by:521 523 | |
Symbol 521 Graphic | Uses:520 | Used by:525 556 |
Symbol 522 Bitmap | Used by:523 | |
Symbol 523 Graphic | Uses:520 522 | Used by:525 556 |
Symbol 524 Graphic | Used by:525 556 | |
Symbol 525 Button | Uses:521 523 524 478 | Used by:526 |
Symbol 526 MovieClip | Uses:471 525 | Used by:570 |
Symbol 527 Bitmap | Used by:528 530 531 | |
Symbol 528 Graphic | Uses:527 | Used by:532 |
Symbol 529 Bitmap | Used by:530 531 | |
Symbol 530 Graphic | Uses:527 529 | Used by:532 |
Symbol 531 Graphic | Uses:527 529 | Used by:532 |
Symbol 532 Button | Uses:528 530 531 517 478 | Used by:533 |
Symbol 533 MovieClip | Uses:471 532 | Used by:540 |
Symbol 534 Bitmap | Used by:535 537 | |
Symbol 535 Graphic | Uses:534 | Used by:538 |
Symbol 536 Bitmap | Used by:537 | |
Symbol 537 Graphic | Uses:534 536 | Used by:538 |
Symbol 538 Button | Uses:535 537 517 478 | Used by:539 |
Symbol 539 MovieClip | Uses:471 538 | Used by:540 |
Symbol 540 MovieClip | Uses:533 539 | Used by:548 568 |
Symbol 541 Bitmap | Used by:542 | |
Symbol 542 Graphic | Uses:541 | Used by:547 |
Symbol 543 Bitmap | Used by:544 | |
Symbol 544 Graphic | Uses:543 | Used by:546 |
Symbol 545 Graphic | Used by:546 | |
Symbol 546 Button | Uses:544 545 478 | Used by:547 |
Symbol 547 MovieClip | Uses:542 546 | Used by:548 568 |
Symbol 548 MovieClip | Uses:540 547 | Used by:570 |
Symbol 549 Button | Uses:405 516 517 478 | Used by:555 |
Symbol 550 Graphic | Used by:555 | |
Symbol 551 Graphic | Used by:555 | |
Symbol 552 Graphic | Used by:555 | |
Symbol 553 Graphic | Used by:555 | |
Symbol 554 Graphic | Used by:555 | |
Symbol 555 MovieClip | Uses:471 549 550 551 552 553 554 | Used by:570 |
Symbol 556 Button | Uses:521 523 524 478 | Used by:562 |
Symbol 557 Graphic | Used by:562 | |
Symbol 558 Graphic | Used by:562 | |
Symbol 559 Graphic | Used by:562 | |
Symbol 560 Graphic | Used by:562 | |
Symbol 561 Graphic | Used by:562 | |
Symbol 562 MovieClip | Uses:471 556 557 558 559 560 561 | Used by:570 |
Symbol 563 Graphic | Used by:568 | |
Symbol 564 Graphic | Used by:568 | |
Symbol 565 Graphic | Used by:568 | |
Symbol 566 Graphic | Used by:568 | |
Symbol 567 Graphic | Used by:568 | |
Symbol 568 MovieClip | Uses:540 547 563 564 565 566 567 | Used by:570 |
Symbol 569 Sound | Used by:570 | |
Symbol 570 MovieClip | Uses:519 526 548 488 555 562 568 569 | Used by:Timeline |
Symbol 571 ShapeTweening | Used by:579 | |
Symbol 572 EditableText | Uses:30 | Used by:579 |
Symbol 573 Graphic | Used by:579 | |
Symbol 574 Graphic | Used by:576 577 | |
Symbol 575 Graphic | Used by:576 577 | |
Symbol 576 Button | Uses:574 575 | Used by:578 |
Symbol 577 Button | Uses:574 575 | Used by:578 |
Symbol 578 MovieClip | Uses:576 577 | Used by:579 |
Symbol 579 MovieClip | Uses:571 572 573 578 | Used by:Timeline |
Symbol 580 MovieClip | Uses:438 | Used by:Timeline |
Symbol 581 ShapeTweening | Used by:610 | |
Symbol 582 Graphic | Used by:610 | |
Symbol 583 Graphic | Used by:610 | |
Symbol 584 ShapeTweening | Used by:610 | |
Symbol 585 ShapeTweening | Used by:610 | |
Symbol 586 Graphic | Used by:610 | |
Symbol 587 ShapeTweening | Used by:610 | |
Symbol 588 Graphic | Used by:610 | |
Symbol 589 Graphic | Used by:610 | |
Symbol 590 Graphic | Used by:610 | |
Symbol 591 Graphic | Used by:610 | |
Symbol 592 Graphic | Used by:610 | |
Symbol 593 Graphic | Used by:610 | |
Symbol 594 ShapeTweening | Used by:610 | |
Symbol 595 ShapeTweening | Used by:610 | |
Symbol 596 ShapeTweening | Used by:610 | |
Symbol 597 ShapeTweening | Used by:610 | |
Symbol 598 ShapeTweening | Used by:610 | |
Symbol 599 ShapeTweening | Used by:610 | |
Symbol 600 ShapeTweening | Used by:610 | |
Symbol 601 ShapeTweening | Used by:610 | |
Symbol 602 ShapeTweening | Used by:610 | |
Symbol 603 ShapeTweening | Used by:610 | |
Symbol 604 ShapeTweening | Used by:610 | |
Symbol 605 ShapeTweening | Used by:610 | |
Symbol 606 ShapeTweening | Used by:610 | |
Symbol 607 ShapeTweening | Used by:610 | |
Symbol 608 ShapeTweening | Used by:610 | |
Symbol 609 Graphic | Used by:610 | |
Symbol 610 MovieClip | Uses:581 480 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 | Used by:Timeline |
Symbol 611 Graphic | Used by:612 | |
Symbol 612 MovieClip | Uses:172 611 | Used by:Timeline |
Symbol 613 Graphic | Used by:615 | |
Symbol 614 Sound | Used by:615 | |
Symbol 615 MovieClip | Uses:613 614 | Used by:Timeline |
Instance Names
"preloadBar" | Frame 1 | Symbol 443 MovieClip |
"notesMove" | Frame 4 | Symbol 452 MovieClip |
"screens" | Frame 4 | Symbol 461 MovieClip |
"lines_mover" | Frame 4 | Symbol 467 MovieClip |
"border_mover" | Frame 4 | Symbol 481 MovieClip |
"screen_mover" | Frame 4 | Symbol 512 MovieClip |
"progress_mover" | Frame 4 | Symbol 514 MovieClip |
"button_mover" | Frame 4 | Symbol 570 MovieClip |
"rootDisplay" | Frame 4 | Symbol 579 MovieClip |
"exploders" | Frame 4 | Symbol 580 MovieClip |
"fall_in_repair" | Frame 4 | Symbol 610 MovieClip |
"missle" | Frame 4 | Symbol 612 MovieClip |
"repairit" | Frame 4 | Symbol 615 MovieClip |
"spinner" | Symbol 50 MovieClip Frame 1 | Symbol 48 MovieClip |
"scrollHandle" | Symbol 51 MovieClip Frame 1 | Symbol 50 MovieClip |
"movements" | Symbol 77 MovieClip Frame 1 | Symbol 67 MovieClip |
"movements" | Symbol 77 MovieClip Frame 2 | Symbol 74 MovieClip |
"movements" | Symbol 77 MovieClip Frame 3 | Symbol 76 MovieClip |
"anim" | Symbol 78 MovieClip Frame 1 | Symbol 77 MovieClip |
"attachClip" | Symbol 80 MovieClip Frame 1 | Symbol 58 MovieClip |
"stickMan1" | Symbol 80 MovieClip Frame 1 | Symbol 78 MovieClip |
"attachClip" | Symbol 92 MovieClip Frame 1 | Symbol 58 MovieClip |
"stickMan1" | Symbol 92 MovieClip Frame 1 | Symbol 78 MovieClip |
"scrollText" | Symbol 126 MovieClip Frame 1 | Symbol 124 MovieClip |
"scrollHandle" | Symbol 126 MovieClip Frame 1 | Symbol 50 MovieClip |
"scrollText" | Symbol 136 MovieClip Frame 1 | Symbol 134 MovieClip |
"scrollHandle" | Symbol 136 MovieClip Frame 1 | Symbol 50 MovieClip |
"attachClip" | Symbol 179 MovieClip Frame 1 | Symbol 58 MovieClip |
"stickMan1" | Symbol 179 MovieClip Frame 1 | Symbol 78 MovieClip |
"c1" | Symbol 187 MovieClip [tutorialScreen37] Frame 1 | Symbol 158 MovieClip |
"c2" | Symbol 187 MovieClip [tutorialScreen37] Frame 1 | Symbol 158 MovieClip |
"c3" | Symbol 187 MovieClip [tutorialScreen37] Frame 1 | Symbol 158 MovieClip |
"minicontrol" | Symbol 187 MovieClip [tutorialScreen37] Frame 1 | Symbol 178 MovieClip |
"minigame" | Symbol 187 MovieClip [tutorialScreen37] Frame 1 | Symbol 179 MovieClip |
"scrollText" | Symbol 192 MovieClip Frame 1 | Symbol 190 MovieClip |
"scrollHandle" | Symbol 192 MovieClip Frame 1 | Symbol 50 MovieClip |
"stickMan1" | Symbol 219 MovieClip Frame 1 | Symbol 78 MovieClip |
"scrollText" | Symbol 226 MovieClip Frame 1 | Symbol 224 MovieClip |
"scrollHandle" | Symbol 226 MovieClip Frame 1 | Symbol 50 MovieClip |
"scrollText" | Symbol 232 MovieClip Frame 1 | Symbol 230 MovieClip |
"scrollHandle" | Symbol 232 MovieClip Frame 1 | Symbol 50 MovieClip |
"stickMan1" | Symbol 281 MovieClip [tutorialScreen20] Frame 1 | Symbol 78 MovieClip |
"stickMan1" | Symbol 294 MovieClip [tutorialScreen17] Frame 1 | Symbol 77 MovieClip |
"stickMan1" | Symbol 305 MovieClip [tutorialScreen13] Frame 1 | Symbol 77 MovieClip |
"stickMan1" | Symbol 335 MovieClip [tutorialScreen9] Frame 1 | Symbol 74 MovieClip |
"stickMan2" | Symbol 335 MovieClip [tutorialScreen9] Frame 1 | Symbol 74 MovieClip |
"stickMan" | Symbol 339 MovieClip Frame 1 | Symbol 74 MovieClip |
"floor1" | Symbol 414 MovieClip [moving_scifi_floor] Frame 1 | Symbol 174 MovieClip [scifi_floor] |
"notes" | Symbol 450 MovieClip Frame 1 | Symbol 449 EditableText |
"scrollText" | Symbol 451 MovieClip Frame 1 | Symbol 450 MovieClip |
"notesHolder" | Symbol 452 MovieClip Frame 1 | Symbol 451 MovieClip |
"screen_back" | Symbol 461 MovieClip Frame 1 | Symbol 58 MovieClip |
"screen_front" | Symbol 461 MovieClip Frame 1 | Symbol 58 MovieClip |
"blip" | Symbol 461 MovieClip Frame 1 | Symbol 58 MovieClip |
"screen_back" | Symbol 461 MovieClip Frame 16 | Symbol 58 MovieClip |
"screen_front" | Symbol 461 MovieClip Frame 16 | Symbol 58 MovieClip |
"display" | Symbol 487 MovieClip Frame 1 | Symbol 484 EditableText |
"screen" | Symbol 512 MovieClip Frame 1 | Symbol 487 MovieClip |
"screen" | Symbol 512 MovieClip Frame 101 | Symbol 487 MovieClip |
"progressor" | Symbol 514 MovieClip Frame 1 | Symbol 443 MovieClip |
"buttons" | Symbol 548 MovieClip Frame 1 | Symbol 540 MovieClip |
"buttons" | Symbol 568 MovieClip Frame 1 | Symbol 540 MovieClip |
"allButtons" | Symbol 570 MovieClip Frame 1 | Symbol 548 MovieClip |
"allButtons" | Symbol 570 MovieClip Frame 21 | Symbol 568 MovieClip |
"allButtons" | Symbol 570 MovieClip Frame 26 | Symbol 548 MovieClip |
"allButtons" | Symbol 570 MovieClip Frame 56 | Symbol 548 MovieClip |
"rootText" | Symbol 579 MovieClip Frame 1 | Symbol 572 EditableText |
"jet" | Symbol 612 MovieClip Frame 1 | Symbol 172 MovieClip |
Special Tags
ExportAssets (56) | Timeline Frame 1 | Symbol 25 as "meteor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 38 as "tutorialScreen4" |
ExportAssets (56) | Timeline Frame 1 | Symbol 42 as "tutorialScreen27" |
ExportAssets (56) | Timeline Frame 1 | Symbol 55 as "meteorScreen" |
ExportAssets (56) | Timeline Frame 1 | Symbol 83 as "tutorialScreen47" |
ExportAssets (56) | Timeline Frame 1 | Symbol 87 as "tutorialScreen54" |
ExportAssets (56) | Timeline Frame 1 | Symbol 90 as "tutorialScreen53" |
ExportAssets (56) | Timeline Frame 1 | Symbol 98 as "tutorialScreen52" |
ExportAssets (56) | Timeline Frame 1 | Symbol 102 as "tutorialScreen51" |
ExportAssets (56) | Timeline Frame 1 | Symbol 106 as "tutorialScreen50" |
ExportAssets (56) | Timeline Frame 1 | Symbol 111 as "tutorialScreen49" |
ExportAssets (56) | Timeline Frame 1 | Symbol 120 as "tutorialScreen48" |
ExportAssets (56) | Timeline Frame 1 | Symbol 127 as "tutorialScreen46" |
ExportAssets (56) | Timeline Frame 1 | Symbol 131 as "tutorialScreen45" |
ExportAssets (56) | Timeline Frame 1 | Symbol 138 as "tutorialScreen44" |
ExportAssets (56) | Timeline Frame 1 | Symbol 142 as "tutorialScreen43" |
ExportAssets (56) | Timeline Frame 1 | Symbol 145 as "tutorialScreen42" |
ExportAssets (56) | Timeline Frame 1 | Symbol 147 as "tutorialScreen41" |
ExportAssets (56) | Timeline Frame 1 | Symbol 149 as "tutorialScreen40" |
ExportAssets (56) | Timeline Frame 1 | Symbol 151 as "tutorialScreen39" |
ExportAssets (56) | Timeline Frame 1 | Symbol 153 as "tutorialScreen38" |
ExportAssets (56) | Timeline Frame 1 | Symbol 159 as "cave_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 176 as "vector_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 187 as "tutorialScreen37" |
ExportAssets (56) | Timeline Frame 1 | Symbol 193 as "tutorialScreen36" |
ExportAssets (56) | Timeline Frame 1 | Symbol 210 as "tutorialScreen35" |
ExportAssets (56) | Timeline Frame 1 | Symbol 176 as "vector_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 159 as "cave_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 212 as "tutorialScreen34" |
ExportAssets (56) | Timeline Frame 1 | Symbol 214 as "tutorialScreen33" |
ExportAssets (56) | Timeline Frame 1 | Symbol 216 as "tutorialScreen32" |
ExportAssets (56) | Timeline Frame 1 | Symbol 221 as "tutorialScreen31" |
ExportAssets (56) | Timeline Frame 1 | Symbol 227 as "tutorialScreen30" |
ExportAssets (56) | Timeline Frame 1 | Symbol 233 as "tutorialScreen29" |
ExportAssets (56) | Timeline Frame 1 | Symbol 236 as "tutorialScreen28" |
ExportAssets (56) | Timeline Frame 1 | Symbol 239 as "tutorialScreen26" |
ExportAssets (56) | Timeline Frame 1 | Symbol 249 as "tutorialScreen25" |
ExportAssets (56) | Timeline Frame 1 | Symbol 254 as "tutorialScreen24" |
ExportAssets (56) | Timeline Frame 1 | Symbol 258 as "tutorialScreen23" |
ExportAssets (56) | Timeline Frame 1 | Symbol 272 as "tutorialScreen22" |
ExportAssets (56) | Timeline Frame 1 | Symbol 276 as "tutorialScreen21" |
ExportAssets (56) | Timeline Frame 1 | Symbol 281 as "tutorialScreen20" |
ExportAssets (56) | Timeline Frame 1 | Symbol 283 as "tutorialScreen19" |
ExportAssets (56) | Timeline Frame 1 | Symbol 292 as "tutorialScreen18" |
ExportAssets (56) | Timeline Frame 1 | Symbol 294 as "tutorialScreen17" |
ExportAssets (56) | Timeline Frame 1 | Symbol 296 as "tutorialScreen16" |
ExportAssets (56) | Timeline Frame 1 | Symbol 298 as "tutorialScreen15" |
ExportAssets (56) | Timeline Frame 1 | Symbol 301 as "tutorialScreen14" |
ExportAssets (56) | Timeline Frame 1 | Symbol 305 as "tutorialScreen13" |
ExportAssets (56) | Timeline Frame 1 | Symbol 313 as "tutorialScreen12" |
ExportAssets (56) | Timeline Frame 1 | Symbol 321 as "tutorialScreen11" |
ExportAssets (56) | Timeline Frame 1 | Symbol 328 as "tutorialScreen10" |
ExportAssets (56) | Timeline Frame 1 | Symbol 335 as "tutorialScreen9" |
ExportAssets (56) | Timeline Frame 1 | Symbol 337 as "tutorialScreen8" |
ExportAssets (56) | Timeline Frame 1 | Symbol 342 as "tutorialScreen7" |
ExportAssets (56) | Timeline Frame 1 | Symbol 359 as "tutorialScreen6" |
ExportAssets (56) | Timeline Frame 1 | Symbol 371 as "tutorialScreen5" |
ExportAssets (56) | Timeline Frame 1 | Symbol 375 as "tutorialScreen3" |
ExportAssets (56) | Timeline Frame 1 | Symbol 388 as "tutorialScreen2" |
ExportAssets (56) | Timeline Frame 1 | Symbol 393 as "tutorialScreen1" |
ExportAssets (56) | Timeline Frame 1 | Symbol 406 as "tutorialScreen0" |
ExportAssets (56) | Timeline Frame 1 | Symbol 408 as "corner" |
ExportAssets (56) | Timeline Frame 1 | Symbol 413 as "blip_clip" |
ExportAssets (56) | Timeline Frame 1 | Symbol 176 as "vector_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 159 as "cave_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 174 as "scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 414 as "moving_scifi_floor" |
ExportAssets (56) | Timeline Frame 1 | Symbol 416 as "meteor_click_clip" |
ExportAssets (56) | Timeline Frame 1 | Symbol 419 as "meteor_crack_clip" |
ExportAssets (56) | Timeline Frame 1 | Symbol 422 as "meteor_crater_clip" |
ExportAssets (56) | Timeline Frame 1 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
ExportAssets (56) | Timeline Frame 4 | Symbol 438 as "explosion" |
Labels
"loaded" | Frame 3 |
"spinner" | Symbol 50 MovieClip Frame 45 |
"stand" | Symbol 77 MovieClip Frame 1 |
"walk" | Symbol 77 MovieClip Frame 2 |
"jump" | Symbol 77 MovieClip Frame 3 |
"right" | Symbol 78 MovieClip Frame 1 |
"left" | Symbol 78 MovieClip Frame 2 |
"off" | Symbol 158 MovieClip Frame 1 |
"on" | Symbol 158 MovieClip Frame 2 |
"start" | Symbol 172 MovieClip Frame 16 |
"stop" | Symbol 172 MovieClip Frame 17 |
"fix" | Symbol 452 MovieClip Frame 30 |
"nuked" | Symbol 452 MovieClip Frame 31 |
"fix" | Symbol 467 MovieClip Frame 1 |
"nuked" | Symbol 467 MovieClip Frame 2 |
"fix" | Symbol 481 MovieClip Frame 31 |
"nuked" | Symbol 481 MovieClip Frame 32 |
"meteor" | Symbol 481 MovieClip Frame 87 |
"movein" | Symbol 512 MovieClip Frame 2 |
"fix" | Symbol 512 MovieClip Frame 20 |
"nuked" | Symbol 512 MovieClip Frame 21 |
"meteor" | Symbol 512 MovieClip Frame 101 |
"movein" | Symbol 514 MovieClip Frame 2 |
"fix" | Symbol 514 MovieClip Frame 20 |
"nuked" | Symbol 514 MovieClip Frame 21 |
"meteor" | Symbol 514 MovieClip Frame 82 |
"nuke" | Symbol 540 MovieClip Frame 1 |
"meteor" | Symbol 540 MovieClip Frame 11 |
"movein" | Symbol 570 MovieClip Frame 2 |
"fix" | Symbol 570 MovieClip Frame 20 |
"nuked" | Symbol 570 MovieClip Frame 21 |
"meteor" | Symbol 570 MovieClip Frame 56 |
"open" | Symbol 579 MovieClip Frame 2 |
|