Tutorial details:
Written by: FlashGuru
Difficulty Level: intermediate
Requirements: Flash 5 and higher
Download FLA

In flash 5 there is a new feature which seem to be causing everyone problems,this is the attachSound method which allows us to control sound with actionscript.

Why this command?!

Well many people have found that there preloaders dont work properly when using this command, the reason for this is as follows, when using the attachSound methods flash at export places all the sounds which you told to "export as symbol" in the linkage properties on a frame before the start of your movie. Basically this means that those sounds have to fully load before the rest of your movie loads. This makes is impossible to create a preoloader for your movie.

The way to overcome this is what my tutorial is about, i hope this will be very useful for many people.

Ok so to create a preloader for your sounds:

It is a good idea for many reasons to have your sound located inside of a seperate .swf file and load that movie into your main movie on the first frame. One reason for this would be continous looping background music that plays regardless of what happens in your main movie.

Ok so create a new flash movie and inside that movie on the first frame add the following script:

function mysound(){
        mysoundobj=new Sound(this)
        mysoundobj.attachSound("idname")
        mysoundobj.start()
}

Well the above script is a function that we can call from anywhere at any time and it will start to play the sound specifed by the "idname", this idname is created by choosing your sound in your library, right-click and select linkage, in the linkage properties dialog box choose "export this symbol" and give the sound an "idname".

The above function is activated by using:

mysound();

Now the movie we just created will contain all the sound for your movie, create as many functions as you want, infact you could use the one function for multiple sounds by adding a paramter for the function, something like this:

function mysound(idname){
        mysoundobj=new Sound(this)
        mysoundobj.attachSound(idname)
        mysoundobj.start()
}

that will tell the sound you send as a paramter to play, the above function is called by using:

mysound("idname");

Save the movie you have just created as "sound.fla" and publish your movie(swf only)