0

Actionscript3 で 1 つの Sound() オブジェクトを使用して、1 つの MP3 を再生し、ユーザーが別の MP3 を選択したときに、同じSound() オブジェクトを使用して2 番目のサウンドを再生するにはどうすればよいですか?

編集:私がそれをした方法については私の答えを見てください。

4

2 に答える 2

0

Sound同じオブジェクトを使用して複数のファイルを再生することはできません。

load()オブジェクトで呼び出されると、後でSoundそのサウンドオブジェクトに別のサウンドファイルをロードすることはできません。別のサウンドファイルをロードするには、新しいSoundオブジェクトを作成します。

于 2009-12-06T13:08:00.803 に答える
0

わかりました、私は実際に次のコードを使用してそれを行いました。私のバグはFLAファイルのどこかにありましたが、これは機能します。初期化されていないグローバル変数を作成し、関数内にローカルでSound()オブジェクトを作成しました。技術的には複数のサウンドオブジェクトを使用していますが、参照はすべて1つのオブジェクトを指しています。さらに、コーディングを容易にするために、これらのメソッドを相互に呼び出すことができます。これは私のために働きます:

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

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
于 2009-12-06T13:18:11.577 に答える