ActionScript 3
サウンドの操作
サーチ…
構文
- Sound.play(startTime:Number = 0、ループ:int = 0、sndTransform:flash.media:SoundTransform = null):SoundChannel //ロードされたサウンドを再生し、SoundChannelを返します。
サウンドの再生を停止する
import flash.net.URLRequest;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.events.Event;
var snd:Sound; = new Sound();
var sndChannel:SoundChannel
var sndTimer:Timer;
snd.addEventListener(Event.COMPLETE, soundLoaded);
snd.load(new URLRequest("soundFile.mp3")); //load after adding the complete event
function soundLoaded(e:Event):void
{
sndChannel = snd.play();
//Create a timer to wait 1 second
sndTimer = new Timer(1000, 1);
sndTimer.addEventListener(TimerEvent.TIMER, stopSound, false, 0, true);
sndTimer.start();
}
function stopSound(e:Event = null):void {
sndChannel.stop(); //Stop the sound
}
無限ループ音
import flash.net.URLRequest;
import flash.media.Sound;
import flash.events.Event;
var req:URLRequest = new URLRequest("filename.mp3");
var snd:Sound = new Sound(req);
snd.addEventListener(Event.COMPLETE, function(e: Event)
{
snd.play(0, int.MAX_VALUE); // There is no way to put "infinite"
}
play()
関数を呼び出す前にサウンドが読み込まれるのを待つ必要もありません。これは同じ仕事をします:
snd = new Sound(new URLRequest("filename.mp3"));
snd.play(0, int.MAX_VALUE);
何らかの理由でサウンドの無限の時間を実際にループさせたい場合( int.MAX_VALUE
は、mp3の一時停止をカウントしないで約68年間1秒のサウンドをループします)、次のように書くことができます:
var st:SoundChannel = snd.play();
st.addEventListener(Event.SOUND_COMPLETE, repeat);
function repeat(e:Event) {
st.removeEventListener(Event.SOUND_COMPLETE, repeat);
(st = snd.play()).addEventListener(Event.SOUND_COMPLETE, repeat);
}
play()
関数は、 SoundChannel
れるたびにSoundChannel
オブジェクトの新しいインスタンスを返します。それを変数に組み込み、そのSOUND_COMPLETEイベントを待ち受けます。イベントコールバックでは、現在のSoundChannel
オブジェクトからリスナーが削除され、新しいSoundChannel
オブジェクトに対して新しいSoundChannel
が作成されます。
外部音を読み込んで再生する
import flash.net.URLRequest;
import flash.media.Sound;
import flash.events.Event;
var req:URLRequest = new URLRequest("click.mp3");
var snd:Sound = new Sound(req);
snd.addEventListener(Event.COMPLETE, function(e: Event)
{
snd.play();
}
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow