Tuesday, November 5, 2024

Flash transitions

This tutorial explains a quick and easy way to transition through different aspects of your site. Transition refers to transitioning content out before transitioning content in. The tutorial covers how to dynamically attach your navigation or how to hard code it.

All of the tutorial material below is placed in frame 1 on the main timeline of your movie.

On frame 1:

This function below (made globally accessable by the “_global” before it) decides what the user pressed in the navigation. As you can see, it takes one argument, which, if you go into the navigation movieclip, you can see that the name of whatever button that got pressed, gets passed into this function. For instance, if they press button1_mc, the script on all of the buttons looks like:

this.onRelease = function(){
navigate(this._name);
}

The this._name automatically sends the name of whatever button got pressed. Because each button is merely an instance of the “nav button mc” from the library, I’m able to give each button an instance name. And with this navigate function, I’m able to easily determine which button got pressed.

So if they pressed button1_mc: (continued in the function explaination)

_global.navigate = function(x) {
//x would equal “button1_mc”
//this global variable lets us limit the user from pressing the same
//button that they’re located at.
_global.pressed = x;
//If where they pressed is where they are already, it won’t do
//anything. the “already” variable is undefined
//on the first run, so it always passes.
if (pressed != already) {
//assign our already variable after the first run.
_global.already = pressed;
//convert the value of x to a string, and assign it to ‘name’
name = String(x);
//find the 6th character of this string. “button1_mc”
//or “button2_mc” it will be 1,2,3 or 4.
which = name.charAt(6);
//Tell our content that they wanted section 1,2,3 or 4. Set
//the content_mc.section variable
//equal to a string concactination of “section” and 1,2,3 or
//4. it needs to be a string since in the
//content_mc we’re telling it to go to a frame label which
//needs to be a string. see the content_mc
//for more details.
content_mc.section = String(“section”+which);
//tell the content to play. come back to this logic after
//you’ve explored the content_mc clip.
content_mc.play();
}
};

The only problem with this approach is that they can press more than one button in the time it takes you to transition everything in or out. To get around this, I’ve made my buttons on my site disappear 🙂

www.dravenslair.net

Another way would be to store what they pressed in an array, and if there are elements in the array, redo your animations until the array is empty, each time, removing the section that they pressed.

Another method is to just disable the buttons. it’s a little more tricky for movieclip buttons, but it can be done

///////////////////////////////////////////////////////////////////////
// ATTACHING THE NAVIGATION DYNAMICALLY version 1.00 12.10.2002 //
/////////////////////////////////////////////////////////////////////

Section 1.0 – Table of Contents
Section 1.0 – Table of Contents
Section 1.1 – Overview of process
Section 1.2 – Summary of attachMovie
Section 1.3 – attachMovie for us!
Section 1.4 – Using the for loop to label our buttons/pathing
Section 1.5 – Positioning our buttons
Section 1.6 – CODE!
Section 1.7 – Summary
Section 1.8 – errata

Section 1.1 – Overview of process

The following code will dynamically attach the navigation buttons to the nav_mc. This is done using “attachMovie”. In order to attach any movie, it needs to have a linkage name. Open your library, right click on the “nav button mc” symbol and select “linkage”. Notice that “export for actionscript” is checked, as well as “export in first frame”. This gives us the ability to place this symbol exactly as we would when we drag it out of the library, except we can do it with code.

Section 1.2 – Summary of attachMovie

The syntax for attach movie is as follows (in plain english):

MovieClip.attachMovie(“linkage name (from library)”,”new instance name of
object attached”,”depth”);

For us that means that we will attach the buttons to our nav_mc. This means that when ever we want to reference the attached buttons, we must first reference our nav_mc. This is because like I said before, attach movie is exactly like dragging a symbol out from our library, except it’s dynamically. In the nav_mc on the guide layer, I just dragged them out. And in order to reference them I had to say “_root.nav_mc.buttonx_mc”. This is the same for when we use it in code:

Section 1.3 – attachMovie for us!

// nav_mc.attachMovie(“navbutton”,”button”+(i+1)+”_mc”,i);

  • nav_mc = the navigation movie clip
  • navbutton = the linkage name that i’ve given our navigation button movie clips (section 1.1)
  • “button”+(i+1)+”_mc” = the instance name of our attached buttons.
    I want to be able to use my old code to navigate, so I give them the same instance names that i gave them if I just dragged them on and gave them a name through the properties panel. Remember that our navigate function looks for the name of the object that called it to decide where to navigate. So they sill need to be “button1_mc”, “button2_mc” etc. “button”+(i+1)+”_mc” will achieve that (because i = 0, so we need to add one 😉
  • i = z-depth of the attached objects.

Section 1.4 – Using the for loop to label our buttons/pathing

I still need to give the buttons labels (section 1 etc.) which is done on the second line of the for loop. The buttonx_mc.title_txt.text still applies just the same as if you dragged it out of the library (yet again). So all we have to do is reference the right path:

  • nav_mc[“button”+(i+1)+”_mc”].title_txt.text = “Section “+(i+1);
  • nav_mc[“button”+(i+1)+”_mc”] = the path to the button. notice it lies on the nav_mc timeline
  • title_txt.text = the dynamic text field in our navigation button
  • “Section +”(i+1) = Section 1, Section 2 etc… (i+1) because we started at 0.

Section 1.5 – Positioning our buttons

I’ve hard coded the x values for where we will place our navigation buttons in an array appropriately named “x_nav_positions”. I’ve cheated and just written down the positions so i could hard code them :). Some simple math would allow you to position them dynamically and evenly if you wanted. In the case of our code:

// nav_mc[“button+(i+1)+”_mc”]._x = x_nav_positions[i];
// nav_mc[“button+(i+1)+”_mc”]._y = 1.1;

  • nav_mc[“button+(i+1)+”_mc”]._x = the path to the _x property for each button in our for loop
  • x_nav_positions[i] = the hard coded values of the x values for our buttons. Notice that the coordinates are relative to the timeline of the nav_mc (just like if we dragged them into the timeline of the timeline of nav_mc… see the pattern here? 🙂
  • nav_mc[“button+(i+1)+”_mc”]._y = the path to the _y property of all of our buttons
  • 1.1 = the _y position for all of your buttons. Again, I’ve cheated and just hard coded this because I know where they are supposed to be 🙂

Section 1.6 – CODE!

x_nav_positions = [39.1, 166.1, 293.9, 421.4];
for(i=0;i

Section 1.7 – Summary

So, if you open the nav_mc movieclip, you’ll see that the navigation buttons are on on a guide level (meaning it won’t publish). Also, notice that the code is commented out. So as you can see, because the buttons function dynamically by calling generic functions and sending in the instance name, all we need to do is attach the buttons to the right path and it works just the same as dragging it from the library maually.

One thing to keep in mind is that these symbols export on the first frame of the movie, and will screw up preloaders. As long as the things you are exporting are relatively small, it shouldn’t affect it, but what happens is the size of these symbols is included in the .swf, but it doesn’t register if you say _root.getBytesTotal(); …. it’s kind of a pain…

So here’s a quick overview of what we did:

  • gave our button a linkage name (symbol id) in the library
  • wrote a for loop to attach the navigation button TO the nav_mc movieclip
  • used the loop to dynamically set the title and positions

Section 1.8 – errata

At time of publication (11:24 AM 12.10.2002 GMT 07:00:000) there are no known bugs of discrepencies

Thanks.

Download the source file here.

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Latest Articles