Pergunta

usando um som (objeto) no Actionscript3, como posso jogar um MP3 e, em seguida, quando o usuário escolhe um diferente, jogar um segunda som, usando o mesmo som objeto ()?

EDIT:. Veja a minha resposta para como eu fiz isso

Foi útil?

Solução

Você não pode usar mesmo objeto Sound ao jogo vários arquivos .

Uma vez load() é chamado em um objeto Sound, você não pode carregar mais tarde um arquivo de som diferente naquele objeto Sound. Para carregar um arquivo de som diferente, criar um novo objeto Sound.

Outras dicas

Ok, eu realmente fiz isso usando o seguinte código. Meu erro estava em outro lugar no arquivo FLA, mas isso funciona. Fiz uma variável global não inicializada e criado o objecto de som () LOCALMENTE dentro de uma função. Enquanto eu estou tecnicamente usando vários objetos sonoros, minhas referências estão todos apontando para um objeto. Além disso, eu posso chamar esses métodos uns sobre os outros para facilitar a codificação. Isso funciona para mim:

    /* -------------

Sound player
functions

 ------------ */

var snd:Sound;                      //the sound object
var sndC:SoundChannel;              //the soudchannel used as "controller"
var sndT:SoundTransform;            //soundTransform used for volume 
var vol:Number = 1;                 //the volume of the song
var pan:Number = 0;                 //panning of the sound
var pos:Number = 0;                 //position of the song 
var currentSound:String;                //currently playing song?


function playSound(s:String){                                   //this function resets the sound and plays it
    stopSound(sndC);                                            //stop the sound from playing
    snd = new Sound();                                          //reset the sound
    snd.load(new URLRequest(s));                                //load the desired sound    
    sndC = new SoundChannel();                                  //(re-)apply the sound channel
    applyVolume(vol,pan,sndT,sndC);                             //apply the volume
    sndC = snd.play(pos);                                       //play it
    sndC.addEventListener(Event.SOUND_COMPLETE, startSound);    //remind it to restart playing when it's done
}                                                               //end function

function applyVolume(n:Number, p:Number, st:SoundTransform, sc:SoundChannel){   //takes an argument for the volume, pan, soundTYransform and soundChannel
    sndT = new SoundTransform(n,p);                                             //applies the soundTransfrom settings
    sndC.soundTransform = sndT;                                                 //and attaches it to the soundChannel
}                                                                               //end function

function stopSound(sndC:SoundChannel){          //this function stops a sound from playing
    if(sndC != null){                           //if the sound was used before (ie: playing)
        if(currentLabel == "video-frame"){      //if we are in the video frame
          pos = sndC.position;                  //store the position of the song to play from at a later time
        }else{                                  //otherwise
          pos = 0;                              //set the position at 0
        }                                       //end if
        sndC.stop();                            //stop it
    }                                           //end if
}                                               //end function

function startSound(snd:Sound){                 //restarts a  sound when it's playing
    if(snd != null){                            //if the sound exists   
        sndC = snd.play(pos);                   //play it
    }                                           //end if
}                                               //end function
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top