Hi there, thanks for checking my post. I am trying to create a class that will 
play a number of mp3 loops each a specified number of times and in the 
specified order. I have tried to find an existing class but cant find one 
anywhere.

My solution (which may not be that efficient), is to create all of the sound 
objects in the fla then load the mp3s into them. When they are all loaded each 
sound object is added to a new object that holds it as well as a 'loops' 
property that says how many times the sound object must play. These objects are 
then put into an array in the order they are to be heard. This array is passed 
to my LoopSound class that controls the playback. I can also pass a 
'loopForever' property that will make the series repeat indefinitely. 

The problem I am having is re-triggering the play() function from within my 
LoopSound Class to move onto the next sound in the array. I am sure that there 
will be a much neater way of achieving what I want, and maybe even a 
pre-written class!

Any direction / suggestions / encouragement much appreciated :)

Thanks!
Danny



//this code would create an instance of the class in the FLA


var mySound:Sound = new Sound();
mySound.loadSound("sounds/gas.mp3", false);
//once sound is loaded:
var my_ar:Array = new Array();
//create object to add to array
var myOb:Object = new Object();
myOb.sound = mySound;
//is to play 3 time
myOb.loops = 3;
my_ar.push(myOb);
var myLooper:LoopSound = new LoopSound(my_ar)


Here is the class:


//this class is designed to play a number of already loaded sound objects 
sequentially, each sound object can be looped for a specified number of times 
then the whole series can be repeated infinitely. Th constructor is passed an 
array of objects that have sound and loop properties that contain a sound 
object and the number of times the sound object is to be looped.


class LoopSound {
        private var sounds_ar:Array;
        //sound playing currently
        var currSound:Sound;
        //which stage of the array we are currently up to
        private var mp3Count:Number = 0;
        //if this series of loops is meant to keep playing until they are 
stopped
        private var loopForever:Boolean;
        //receives array that holds objects that have the key sound & loops
        public function LoopSound(a:Array, lF:Boolean) {
                trace("loopsound created:"+a);
                mp3Count = 0;
                sounds_ar = new Array();
                sounds_ar = a;
                loopForever = lF;
                this.play();
        }
        private function play() {
                trace("Loopsound started playing");
                trace("mp3 count:"+this.mp3Count+":"+sounds_ar);
                currSound = sounds_ar[mp3Count]["sound"];
                //creating local vars for targetting from currSound complete
                var mp3C:Number = mp3Count;
                var snds_ar:Array = sounds_ar;
                //calculate number of times mp3 is to loop
                var currLoops:Number = sounds_ar[mp3Count]["loops"];
                currSound.start(0,currLoops);
                currSound.onSoundComplete = function() {
                        //if there are more sound objects to play iterate thru 
array and retrigger play()
                        if (mp3Count<snds_ar.length) {
                                mp3Count++;
                                //this bit isn't working!
                                play();
                        } else {
                                if (loopForever) {
                                        mp3Count = 0;
                                        this.play();
                                } else {
                                        //all sound objects have played and 
play() is not retriggered
                                        mp3Count = 0;
                                }
                        }
                };
        }
}

_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

Reply via email to