Playing a Sound
Unfortunately, there is no simple way to play a sound. You will have to import the sound, write several lines of code, and then write several more lines of code to play the sound in anything but the standard way.
Linking and Playing Sounds
The first thing you need to do before playing a sound with ActionScript is to link it. Import the sound into the Library, select Linkage from the Library panel's menu, and set the sound to export with the movie. You can also assign a different linkage name to the sound, but Flash starts you off with the same name as the Library element, which is the same name as the file.
If you are working with a movie that has a lot of sound, it is a good idea to set the default sound compression to Raw in the Publish Settings. When you test your movie, Flash will not take the time to compress the sound. This way, you can test your movie as quickly as possible. Then, change the default sound compression setting to what you really want before publishing a copy for the Web.
For instance, if you import the file mysound.wav, it will appear in the Library as mysound.wav. When you set its Linkage properties so that it exports with the file, it will be assigned the linkage name mysound.wav, but you can change that to anything you want. It is this linkage name that you will use to refer to the sound in your code.
To play a sound, you have to perform at least three steps. The first step is to create a new sound object:
mySound = new Sound();
Then, you need to attach the sound in the Library to this sound object:
mySound.attachSound("mysound.wav");
Finally, you have to tell the sound object to play the sound:
mySound.start();
Here is a simple button handler that plays a sound from the Library:
on (release) {
mySound = new Sound();
mySound.attachSound("poof.wav");
mySound.start();
}
You can find this simple example in the movie 22playsound.fla. You can find a slightly more sophisticated approach in the movie 22playsoundfunction.fla. In this movie, a function called playSound is placed in the main timeline. This function includes all the code you need to play a simple sound.
function playSound(soundName,balance) {
var mySound = new Sound();
mySound.attachSound(soundName);
mySound.start();
}
By using this function, you can simplify your ActionScript so that you can play a sound with only one line. Here is a button script that uses this function:
on (release) {
playSound("poof.wav");
}
The start Command
The start command in the previous example can be used in a few different ways. You can add up to two additional parameters to it to alter the way the sound plays.
mySound.start(1000);
The second parameter the start command can take is the number of loops. For instance, if you want to start the sound off at 1 second and loop it three times, you would do this:
mySound.start(1000,3);
If you want to start the sound at the beginning and loop it three times, just use 0 as the offset:
mySound.start(0,3);
The companion command to start is stop. If you are playing a long sound, you can issue a stop command at any time to halt the sound in its tracks. You must supply the sound name again as a parameter. Otherwise, the stop command stops all sounds playing.
mySound.stop("poof.wav");
Adjusting Volume
You can alter a sound both before and during playback with a variety of commands. All these commands somehow alter the volume of the sound, in both speakers together or separately.
mySound.setVolume(50);
The example movie 22playsoundvolume.fla features a Play button and four different volume buttons. The top one sets the volume to 0, the next one to 10, the next to 50, and the bottom button to 100. The Play button plays a sound 100 times so that you can have the chance to adjust the volume while it plays.
You can click a button during playback to adjust the volume. Note that adjusting the volume of a specific sound does not affect the volumes of other sounds being played at the same time. This means that you can have separate controls for different sounds—such as background music and instance sounds.
Sound Properties
Sound objects have two properties that you should know about. The first is duration. This is the how long the sound is, in milliseconds.
onClipEvent(enterFrame) {
// how far along is the sound (0.0 to 1.0)
percentPlayed = thisSound.position/thisSound.duration;
// how wide is the bar
barWidth = _root.bar._width;
// set the mark
_root.mark._x = _root.bar._x + barWidth*percentPlayed;
}
When a Sound Ends
You can use the duration and position of a sound to determine when a sound ends. They will be equal to each other. However, if a sound loops, the duration and position of a sound will be equal to each other for a moment at the end of each playback of the sound.
A better way to determine the end of a sound is to use the onSoundComplete listener.
This is a function triggered when the sound is finished playing.
mySound = new Sound();
mySound.attachSound("mySound.aif");
mySound.onSoundComplete = function () {
trace("sound done!");
}
mySound.start();
Setting the Balance
You can also direct the sound more to one speaker than the other with the setPan command. This is similar to the balance control on a stereo.
mySound.pan(-100);
The movie 22monopan.fla has a single-channel (mono) sound in it. When you click the button on the left, the sound plays completely from the left speaker. When you click the button on the right, the sound plays completely from the right speaker.
This is done by setting to the pan to -100 or 100 before playing the sound.
No comments:
Post a Comment