In this easy tutorial made for Flash MX, Flash MX 2004 or Flash 8, you will learn to create a shiny animated effect which will appear once a user rolls his mouse over a button. Many visitors to my site have asked me to explain how to make this kind of effect once they have seen it in my tutorial in which I explain how to make a tabbed website menu in Flash. To all of you who have requested this β here it is! In particular, you will see how to:
- Make a button shape using the drawing tools in Flash,
- Turn the shape into a movie clip,
- Add more design layers inside the movie clip to create a button that looks more real,
- Use the linear gradient to create the shiny effect,
- Animate the effect via the frame-by-frame animation and
- Implement some simple ActionScript code to make the effect work.
You can see an example of what you are going to learn in this detailed lesson below. Move your mouse over the button to see the glittery shining rollover effect!
Drawing the button's main shape
1 Open a new Flash document.
2 Select the Rectangle tool (R).
3 In the Properties panel, select the following options for the Rectangle tool:
- For the stroke color (the one used for lines), select a hue that will be darker than the fill, making the button more evident and visible in this way. I chose the color #004182 (see 1 in the image below).
- Select a fill color, lighter than the previous one - I used #0066CC (2).
- Select Solid as type of line (3).
- In the field for line thickness, type 2 and press Enter (4).
- This is optional: if you are working in Flash 8 and you'll be making a Flash movie intended for Flash player 8 and not for previous versions, you can turn on Stroke hinting. This effectively removes any jagged edges that may appear around the lines you are going to draw.
4 Go back to the Tools panel, to tweak some more options for this tool. In the Options portion of this panel, do the following:
- Make sure that the Object Drawing option is turned off. This applies to you only if you are working in Flash 8 (see the little icon marked with 1 below).
- Also, make sure that the Snap to Objects option is turned off too. You really don't need it right now and you will draw a lot more easily with it switched off (2).
- Click on the Set Corner Radius icon. A small window will appear: enter 14 as corner radius value and click OK. This is necessary if you wish to draw a rectangle with rounded corners.
5 Click on the stage and start dragging your mouse. Make a rectangle similar to the one shown below.
Ok, but what if you wish to have specific dimensions for your button? This is really easy to accomplish.
6 Using the Selection tool (V), double-click on the fill area of the rectangle - this way, you will select both the fill and the outline.
7 Go to the leftmost part of the Properties panel. You will find the input fields for the shape's dimensions there. They are marked as W for width and H for height. Enter 103 pixels for width and 37 pixels for height.
Save your document at this point. Let me show you now how to make the button look more realistic - you will add depth to it by creating a nice glossy effect.
Converting the shape into a movie clip and adding a glossy effect to it
8 Select the shape on the stage again - both the fill and the outline! This is necessary, because once you have used the fields in the Properties panel, the focus isn't on your object any more. That's why you have to select it again.
9 Select Modify > Convert to Symbol (shortcut: F8) to make a movie clip out of your shape. In the dialog that appears, do the following:
- select Movie clip as type,
- call it animated shiny button or whatever you like and
- click OK.
Your newly made movie clip has a thin blue line around itself, and also a little white circle in the middle, with a cross inside it - this is the movie clip's registration point. It is around that point that all the manipulations are made. For example, if you wish to move your movie clip around with ActionScript, the registration point is the reference point for determining and setting the movie clip's position on the stage.
Let me teach you know how you can easily give your button a more plastic, glossy look.
10 Double-click on the movie clip on stage with the Selection tool (V).
You should now be inside the movie clip. How can you know that you are inside the movie clip - working on its timeline and not the main one? Well, just look above the stage and the layers - all the pertinent information is nicely displayed there.
11 Call the first layer base shape.
12 Make a new layer and call it gloss.
13 With the Selection tool (V), click once on the fill to select it. Do not click twice, because you don't need to select the outline now. Just the fill!
14 Press Ctrl+C to copy the selection.
15 Lock the base shape layer.
16 Click on the gloss layer's first frame to select it for working.
17 Press Ctrl+Shift+V to paste in place here the shape you copied three steps before. Pasting an object in place in Flash places it exactly on the same position where the original was. This is very useful - thanks to this simple but great feature, you don't have to adjust an object's position manually.
18 Don't click anywhere now, so that the just pasted shape stays selected. Select the Free Transform Tool (Q). Handles will appear around the selected shape. I have zoomed in on my shape to be able to work more easily and be more precise.
19 Hold down Alt, bring your mouse over a corner of the shape (any one will do). A small diagonal arrow will appear. Click and start dragging. You will now modify your shape symetrically thanks to the Alt key.
When you have made the shape just a little bit smaller than the one inside the base shape layer, just release your mouse. And leave the shape still selected.
20 Go to the Color Mixer panel by selecting Window > Color Mixer. Make sure that the fill option is selected. If it isn't, just click on the little bucket icon (see 1 in the image below). Then select Linear as type of gradient (2).
21 Still in the Color Mixer panel, go to its lower part and there you will find the gradient color strip. For a nice glossy effect, you need at least three colors. To add a third color, just bring your cursor between the two existing colors and a plus sign will appear (see the animation in the image below), meaning that Flash is ready to add another colored square here. Click to do just that.
22 You must adjust the placement, color and transparency of each small square. Just clicking on a square brings up its alpha property (transparency) and hexadecimal color code in the area above the color strip. The image shows the colors and alphas you should assign to each square:
So, all the three colors which compose your linear gradient are pure white (#FFFFFF), and their alphas are as follows, from left to right: 90%, 14% and 0%.
Once you've got that right, place the squares so that they are positioned as the image clearly shows. To move a color square, click on it and start dragging it to the left or right. Just do not drag it down, because you will delete it in this way.
23 Using the Selection tool (V), click anywhere outside the button to unselect it. Do this once, because if you double-click on an empty area of the stage, you will return to the main timeline. And you don't want to do that now, because there is still work to do inside the movie clip. Your button should look close to this one:
That's fine, but the linear gradient (gloss) is placed horizontally, instead of vertically. Correcting this is easy, just follow my next step.
24 Select the Gradient Transform tool (F). Click on the gradient shape to select it with this tool. Some interesting handles will appear π
25 Move your mouse over the little white circle (see image on the left below) and the cursor will turn into four arrows that are forming a circle. Fine - that means that your gradient is ready to be rotated. Do just that - click and start dragging your mouse clockwise. Stop dragging once you've made a 90 degree turn (see image on right) and release the mouse button. If during the rotation the gradient won't snap to a 90Β°angle, just check if the Snap to Objects option is turned on (the little magnet icon on the bottom part of the Tool panel).
26 You've got your gradient where you want it, but it is too wide. To adjust its width (or height, as you like it), place your mouse over the little white rectangle that is placed in the middle of the blue line (see first picture on left below). Click and start dragging it upwards. Once you have reached the lower border of the button, you can release the mouse (see middle picture below).
As you can see, the gloss is nicely visible now. But I am personally not satisifed with its position - there is too much of the blue area being visible on the top part of the button. If you have the same result and are not satisfied with it, just use the Selection tool (V) to select the gradient and move it upwards by pressing the up arrow key on your keyboard.
You will now see how to easily create that shining animation, and I will also explain you why this button is in fact a movie clip symbol.
Creating the animation for the rollover effect
27 Lock the gloss layer. Make a new layer above it and name it shine animation.
28 Unlock the base shape layer.
29 You will now repeat the same procedure you did in steps 13 through 17, but for the shine animation layer, instead of gloss:
- Use the Selection tool (V) to select the fill shape in the base shape layer (click once on it).
- Copy the selected shape by pressing Ctrl+C.
- Lock the base shape layer to avoid any possible mistakes.
- Select the first frame of the shine animation layer by clicking on it.
- Paste in place the shape here by pressing Ctrl+Shift+V.
30 The newly pasted shape should still be selected. Press F8 (or select Modify > Convert to Symbol) to turn it into a symbol. Select Movie clip as type, like you did before, name it rollover effect and click OK. You have just made a movie clip inside a movie clip.
31 Double-click on this new movie clip on the stage (with the Selection tool) to access its timeline. Once again, if you look above the layers, you will see that Flash has duly informed you that the current timeline you are working in is that of the movie clip rollover effect. Cool. π
32 Go over to the timeline. Click with your mouse on the first keyframe and drag it one frame forward. Once there, release it. This simple step can easily be understood if you just look at the sequence of three screenshots below.
Why this must be done? Simply because the animated shine rollover effect must not be visible while the user isn't interacting with the button. This means that the shine must not be displayed if the user has not moved her mouse over the button. And if you leave it on the first frame, it will be visible.
What follows next is some simply tweaking around (once again) with the linear gradient fill.
33 Click once on the fill shape on the stage to select it - to bring it into focus. This is done, of course, with the Selection tool (V).
34 Once again, go to the Color Mixer panel. Select Linear as fill type.
Add a third color to the gradient strip, just like you did before and put it exactly in the middle. Set the following color and alpha values: all three squares should again be pure white, aka #FFFFFF, and the alphas should be (from left to right): 0%, 69% and 0%.
35 Select the Gradient Transform tool (F). Place your cursor over the rotational handle (the little white circle). Click and start moving the gradient clockwise until you reach a 45Β° turn.
36 Now place your cursor over the handle that is used to stretch or compress the gradient - it is the little white square. Once you do that, your cursor will turn into a two-pointed horizontal arrow. Click and start pushing inwards. The gradient will compress - its height will be reduced.
37 Place your cursor over the handle that serves to move the gradient - the little white circle in the middle. Your cursor will change into a cross with an arrow on each end. Click and move the gradient upwards and to the left, so that its lower part covers just a portion of the button's upper left corner.
The remaining actions that need to be done will consist just of adding new keyframes and moving the gradient around.
38 Go back to the layer's timeline. Right-click on frame 3 and select Insert Keyframe from the menu.
When you insert a new keyframe in the layer, the previous keyframe's contents are automatically and completely copied to the new one. Which suits you just fine, because you are right now making a frame-by-frame animation. Therefore, you will just change the position of the gradient in this new keyframe.
39 Don't move anywhere on the timeline. Just go back to the stage and using the Gradient Transform tool (F), move the gradient a little bit down and to the right.
40 Add a new keyframe to the layer: right-click on frame 4 and insert a keyframe, just like you did in step 38.
41 On the stage, move the gradient again. In the same direction - diagonally downwards and right.
42 Add the fifth and the final keyframe to the animation: right-click on frame 5 and insert a keyframe.
43 ...and move the gradient for the last time.
Yes! That's it concerning the animation work! It was easy, wasn't it? Sure! It will become second nature to you before you'll even know it π
It's time to see this animation in action! Just select Control > Test Movie (shortcut: Ctrl+Enter). The test movie window will appear and you'll see the animation play continually over and over again, like in the example shown below.
This is normal, because every animation in Flash behaves like this unless you tell it otherwise. With ActionScript, of course. And that is just what you will do next: control the animation via some simple ActionScript code. Also, don't be alarmed if the animation seems to be too quick. This will be just fine once you add some interaction to your movie clip (that is acting as a button).
Stopping the animation from looping and finalizing the button's design
44 Call the current layer animation and lock it.
45 Add a new layer and call it actions.
46 Click on the action layer's first (and only) keyframe to select it...
...and select Window > Actions (shortcut key: F9) to open the Actions panel. Insert the following code inside:
stop();
This simple action will prevent the animation from starting and going endlessly in a loop. Also, you will add some ActionScript code later that will make possible for the shiny rollover effect to appear only once. The user will roll over the button with her/his mouse, the animation will play out, and once it comes back to the first frame, it will stop because of the stop();
action you have just put there. Simple and effective.
47 Click on the animated shiny button link above the layers to go back to it.
You are doing this to add some final touches to your button: the button's label. If you had clicked on Scene 1 link, you would have gone back to the main timeline and then go back inside your movie clip again.
48 Select the rollover effect movie clip you were just inside of a moment before, by clicking once on its registration point - the little white circle looking like a crosshair. To be sure that you have selected it, just check out the Properties panel: you should see "Instance of: rollover effect" displayed there.
Why click on this particular spot? Well, since the first frame inside the rollover effect movie clip is empty, there is nothing to click on except the registration point. π
49 Go to the left side of the Properties panel and in the Instance name input field enter this movie clip's name: call it glitter.
This is a must - without the Instance name, you wouldn't be able to control this movieclip via ActionScript.
50 Lock the shine animation layer and make a new layer above all the current ones and call it label.
51 Select the Text tool (T). Go down to the Properties panel and set the following options for your text field (the numbers of the list correspond to the numbers in the image):
- Select Static text as type of field. This is the right choice for text that won't change via ActionScript or by user input. Ideal for animations, interfaces and such.
- Select a font you like. Any font! Static text fields are displayed equally on all computers, whether a visitor to your site has it installed on his computer or not. This kind of text is automatically embedded in your SWF movie.
- Set the font size - a bigger font size is good for a nice big button like this one.
- Select a font color. White is fine on a darker background like the one used in this lesson.
- For Flash 8 users only: select Anti-alias for animation if you plan to publish your movie for earlier versions of the Flash Player, like version 6 or lower, for example. If you are creating this SWF for Flash Player 8 or later, select Anti-alias for readability - the label will look much smoother.
- Finally, leave the Selectable option turned off. Leaving it on would make possible for a visitor to select the label text, which will possibly disrupt the button's functionality and look really ugly once the cursor is passed over it.
52 Click somewhere over the button and type in the label for your button: I typed portfolio. Write anything you like that goes well with your link.
53 Once you're done, press Esc to exit the text editing mode. Use the arrow keys on your keyboard now to move the label into a good position - centering it inside your button looks ok.
Lock the current layer. If you wish, you can move the label layer below the gloss and shine animation layers for a different effect. Doing this will pull an "effect cover" over the label. Try it out and see what works best for you.
Ok now, let's make this baby shine for your site visitors!
Inserting the ActionScript code that enables the interactivity
54 Click on the Scene 1 link above the layers to return to the root (main) timeline.
55 Click once on your movie clip (that is representing and acting as a button) with the Selection tool (V) to select it.
56 In the leftmost part of the Properties panel, find the Instance name field, click inside it, type shinyButton and hit Enter to confirm.
You can also call it shinybutton or myButton if you like, but just remember to type that exact name in the ActionScript code later. I used shinyButton because that's just the style of instance names in Flash and also the ActionScript language.
57 Lock the current layer and call it button. Make a new layer above it and call it actions. Select its first frame.
58 Open the Actions panel (F9) and enter the following ActionScript code inside it:
shinyButton.onRollOver = function() {
this.glitter.play();
};
59 Test your movie (Ctrl+Enter). Don't attack the button immediately π and you'll see that there is no animation. Roll your mouse over it and - zap! There it is, just once! Roll your mouse out of the button and roll it over again, and zap! There it is again. The nice shiny effect in all its glory π
OK, let's me show you now how this works.
The ActionScript code explained
Please note that this is ActionScript 1.0, which means it can function with Flash MX and all the subsequent versions.
The first line,
shinyButton.onRollOver = function() {
defines the function that makes the rollover effect possble. It says that a function
is assigned to the shinyButton
movie clip's onRollOver
event handler. An event handler handles a certain kind of event: it tells Flash what to do if this event happens. In this partcular case, that event happens when someone rolls his mouse over the movie clip in question.
It tells Flash to execute a function, meaning everything that is placed between its curly braces: {
and }
. And inside it is a simple line of code:
this.glitter.play();
The ActionScript keyword this
points to the object the keyword is placed upon: Since the keyword is inside the function which is linked to an event handler (onRollOver
) that belongs to the shinyButton
movie clip, the keyword this
means exactly the shinyButton
movie clip itself.
So, the construct this.glitter
is a pathway, a pointer to the glitter
movie clip, which is inside the shinyButton
movie clip. In other words,
this.glitter
means
shinyButton.glitter
But you have to write the keyword this
, otherwise the whole thing wouldn't work. If you wrote shinyButton.glitter
, Flash would look for a movie clip called shinyButton
inside the shinyButton
movie clip, and that one simply doesn't exist. So the complete line
this.glitter.play();
simply tells the glitter
movie clip to start playing. Remember, you have stoped it from going on by using the stop()
action that you placed inside it.
And it plays, the user sees the effect, and once the animation has reached the end, it goes back to the first frame, where it reads the stop()
action, and, well, it stops. It is really easy.
Using a movie clip as a button
And to wrap this tutorial up, I will explain to you why you had to use a movie clip instead of a button to achieve the shiny animated rollover effect.
If you used a button symbol, you would have placed the shining animation inside its Over keyframe. Fine so far. But there is a slight problem. A button symbol is aware only of itself, so the path to other objects has to be written fully - always, if you want the button to find that other movie clip, button, etc. Also, when you place a movie clip inside a button, it is very difficult to control it via ActionScript, and frequently there is no response at all from the movie clip.
Likewise, if you want to make a rollout effect for your button - you may as well forget it. This can be done only with a movie clip, not to mention if you want animated effects that will happen when a user clicks the button and then releases it.
Movie clips are one of the most powerful assets in Flash. I don't despise button symbols, they are great too and I love them for their simplicity. But movie clips offer much, much more possibilities.
That being said, I hope that you enjoyed learning from this tutorial as much as I enjoyed making it! Below you can download the source file for it: please note that the .FLA file is in Flash MX 2004 version, so if you have Flash MX, you won't be able to open it.
Download the zipped source FLA file for the shiny button roll over effect shown in this lesson.
How do get the action sctipt working for Flash CS3?
Go to File > Publish Settings. Select the Flash tab. Select ActionScript 1 or 2 and Flash player 8.
How do I get this new shiny rollover button to link to a webpage? Where do I change the actionscript? Thank you! This tutorial was super helpful. This is the last part that I am stuck on.
Ruben: Please check out other tutorials. Under the Menus & Interfaces section and also under the banners section there are many tutorials which explain how to do it – for ActionScript 2.0.
when I finish I get this :
Warning: 1090: Migration issue: The onRollOver event handler is not triggered automatically by Flash Player at run time in ActionScript 3.0. You must first register this handler for the event using addEventListener ( ‘mouseOver’, callback_handler).
mark maxwell: I mentioned at the beginning of this tutorial that this is a Flash 8 lesson. So, if you are working in Flash CS3, go to File > Publish Settings. Click the Flash tab and set the ActionScript there to 2.0.
Ah dear sir you are brilliant. I had been trying to create a button using just one Instance instead of 2xclicking into the movie clip, also using the Actioscript that Flash provides basic users with, whereas yours is alot easier to follow, appreciate the effort u put into this buddy!
Hi there! This tutorial was great, I finally managed to do it. I was able to create the whole button but ended up with 1 error but it still worked when I inserted the flash button on Dreamweaver. The problem is how do I get it to link to another webpage on Dreamweaver? I have the old version. I have been stuck on this for ages and all I want it to do know is to insert it on Dreamweaver and being able to link it. Thanks if you can help!
This is a really good tutorial even though I made shine what I needed to, I got a bit a lost after making it shine I suppose it’s just getting used to a programme and getting your head round things a bit more, but as they say practice makes perfect! Cheers though all the same!
*This is Fantastic tutoriyal
*we need proplem solved this tutoriyal .
*meny important activity include this tutoriyal .
*every student see this web tutoriyal thanks.
Hi,
Friends i want to create animation on button onRollOver effect, how can i get it? do you have any idea? animation means like let say, i have one button, now when someone over moue on it at that tile button will get movement like round means button will rotate in x-axis. any idea??
Many Thnaks…
Hi, nice tutorial and effect
Hi Luka, fab lesson, just one question, how would I go about creating say 6 tabs, I’m very new to flash and trying to learn everything at once, I’m really stuck. I got the button working beautifully, once I read down the line and discovered that all I had to do was change the settings to flash 8 action 1.0 or 2.0..LOL. Thank you for your valuable time and for the great lesson, so simple to follow…cheers June
Thanks for the great lesson!
Thanks π
Thanks ! all your tutorials are good and easy to understand coz of explanation of making them in step by step..
keep it up.
Thanks for your tutorials i got to learn a lot of things and the explanation is easy to understand . keep up with all the hard-works .
Thanks
all your tutorials are great and easy to understand
Great tutorial. very easy to understand. and well laid out. Thank you for being so comprehensive.
thaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaankooooooooooooooooooooo………………………….