| How to Control the Position of a Sound Object | Return to Index | Do you want all FLA's used for this tutorial? | Do you have a question? |
Flash MX allows excellent control over the time position of a sound object, allowing you to track the position in milliseconds if you wish. Because you can detect when an exact amount of seconds have passed from the beginning of a sound, it is possible to use a sounds position in time to activate events in your Flash movie. This provides an additional powerful tool to control your presentation.
| Fig. 10: Example of fading a sound object five seconds from the end of the song |
Fading a Sound Object Five Seconds from the End of the Song
To begin a fade out five seconds from the end of a song, the sound object properties "duration" and "position" can be used. The property "duration" reports the duration of a sound in milliseconds. The property "position" reports the number of milliseconds the sound has been playing.
For a sound object defined with the instance name of "myMusic", the syntax for these properties is as follows:
myMusic.duration; |
Using the "duration" property, you can define a variable that equals the
duration of a sound minus 5 seconds:
| myMusicDuration = _root.myMusic.duration/1000; myMusicPosition = _root.myMusic.position/1000; fadeEnd=(songDuration-5); |
In the above example, the variable "myMusicDuration" is defined as equaling the duration of the sound object "myMusic" divided by 1000. The variable is divided by 1000 because the duration is reported in milliseconds (5000 milliseconds equals 5 seconds). Similarly, the variable "myMusicPosition" is defined as equaling the current position of the sound object "myMusic". Finally, the variable "fadeEnd" is defined as "myMusicDuration" minus five. The number five can be used (versus 5000) because "myMusicDuration" has already been divided by 1000.
By placing the above three lines of code in a movie clip that loops using the event handler, "onEnterFrame", the variables are updated every time the frame is processed. The ActionScript watches for "fadeEnd" to be equal to or less than "songPosition", and then begins fading the volume of the sound object.
| this.onEnterFrame = function () { myMusicDuration = _root.myMusic.duration / 1000; myMusicPosition = _root.myMusic.position / 1000; fadeEnd = (myMusicDuration - 5); // //Fade Out // if (fadeEnd <= songPosition && myMusicVolume>0 && playing==true) { if (myMusicVolume<=1) {myMusicVolume=0} _root.myMusic.setVolume(myMusicVolume); myMusicVolume=myMusicVolume-1; } } |
In order to make this work, the variable "myMusicVolume" must equal some number before the above script runs. If it does not, the first time you indicate that the setVolume is "myMusicVolume", the volume will be zero. There are a few ways to resolve this. One way is to define "myMusicVolume" as a variable at the same time as the sound object is defined.
| myMusic = new Sound(myMusicMc); myMusic.attachSound("myMusic01"); myMusicVolume=100; myMusic.setVolume(myMusicVolume); |
Experiment with the Flash example in Fig. 10 to see the sound fade in or out.
|
Return to Index | Do you want all FLA's used for this tutorial? | Do you have a question? |
This document copyright © 2004 by Kenny Bellew of Cowfly.Com Design, kennybellew@hotmail.com