Thanks, Steve, I may need to go that way.

 

I am trying to do it with embedded sounds, because the files are tiny, and
it is an AIR app so bandwidth is not an issue.

 

Worst case is I make a switch function, but I am striving for something a
bit easier to maintain.

 

Tracy Spratt,

Lariat Services, development services available

  _____  

From: [email protected] [mailto:[email protected]] On
Behalf Of valdhor
Sent: Friday, July 10, 2009 9:47 AM
To: [email protected]
Subject: [flexcoders] Re: Trying to make SoundManager class using
getDefinitionByName

 






Hmmm... You got me.

This is what I came up with...

package assets.sounds
{
    import flash.media.Sound;
    import flash.media.SoundChannel;
    import flash.net.URLRequest;
    
    public class SoundManager
    {
        private var sound:Sound;
        private var channel:SoundChannel;
        
        public function playSound(sSoundName:String):void
        {
            if(channel != null)
            {
                channel.stop();
            }
            sound = new Sound();
            var req:URLRequest = new URLRequest("assets/sounds/" +
sSoundName + ".mp3");
            sound.load(req);
            channel = sound.play();
        }//playSound
    }//class SoundManager
}//package assets.sounds

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
layout="horizontal"
    creationComplete="onCreationComplete()">
    <mx:Script>
        <![CDATA[
            import assets.sounds.SoundManager;
            
            private var soundManager:SoundManager
            
            private function onCreationComplete():void
            {
                soundManager = new SoundManager();
            }
        ]]>
    </mx:Script>
    <mx:Button label="Play Beep-1"
click="soundManager.playSound('beep-1')"/>
    <mx:Button label="Play Beep-2"
click="soundManager.playSound('beep-2')"/>
    <mx:Button label="Play Beep-3"
click="soundManager.playSound('beep-3')"/>
</mx:Application>


--- In [email protected], "Tracy Spratt" <tr...@...> wrote:
>
> I am trying to make a sound manager class that will simplify playing a
sound by using an id string. I have embedded the sound files, but am havign
trouble getting the Sound object initialized. I get an error, "Variable
beep1 is not defined" though cllearly it is.
> 
> I suspect I am misusing getDefinitionByName. If there is an easier/better
way, I am open to that as well. The full class code is below.
> 
> Tracy
> 
> package assets.sounds
> {
> import flash.utils.getDefinitionByName;
> import flash.media.Sound;
> 
> public class SoundManager
> {
> [Embed(source="beep-1.mp3")]private var beep1:Class;
> [Embed(source="beep-2.mp3")]private var beep2:Class;
> [Embed(source="beep-3.mp3")]private var beep3:Class;
> 
> 
> public function playSound(sSoundName:String):void
> {
> var classRef:Class = getDefinitionByName(sSoundName) as Class; //Variable
beep1 is not defined.
> var s:Sound = new classRef as Sound;
> s.play();
> }//playSound
> }//class SoundManager
> }//package assets.sounds
>



Reply via email to