[英]AS3 playing audio and looping it
我正在嘗試讓一個音頻文件在我的項目的后台播放,但到目前為止還沒有成功。 這是我到目前為止所得到的。
package {
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.media.*;
public class Music extends MovieClip {
// Create a sound
private var music:Sound;
// Use a URLRequest for file path
private var request:URLRequest;
// Create a sound buffer
private var buffer:SoundLoaderContext;
// Create a sound channel
private var channel:SoundChannel;
public function Music() {
// constructor code
//Instantiate all sound objects
buffer = new SoundLoaderContext(1000);
request = new URLRequest("SMB3-Grassland-Map.mp3");
music = new Sound(request, buffer);
// Play music and assign it to a channel
channel = music.play();
// Add an event listener to the channel
channel.addEventListener(Event.SOUND_COMPLETE, loopMusic);
}
// playMusic method restarts music
private function playMusic()
{
channel = music.play();
channel.addEventListener(Event.SOUND_COMPLETE, loopMusic);
}
// Channel event listener call playMusic method
private function loopMusic(e:Event)
{
if (channel != null)
{
channel.removeEventListener(Event.SOUND_COMPLETE, loopMusic);
playMusic();
}
}
}
}
這只是播放外部音頻文件並讓它不斷循環播放。
您可以將參數添加到.play()
方法,而不是讓事件偵聽器在聲音完成時再次播放聲音。 第一個參數表示您希望它在聲音的哪個點開始播放,第二個參數表示您希望它播放多少次,如果您想應用聲音變換,則使用第三個參數。 在您的情況下,您可以執行.play(0, int.MAX_VALUE);
這將為您提供您正在尋找的連續循環。
“問題是它根本沒有播放任何東西。”
我復制了您的代碼並創建了一個 AS3 類文件(替換了我自己的本地 MP3 URL)然后創建了一個具有以下內容的 AS3 文件:
import Music;
var mus:Music = new Music();
並運行它。 聲音播放和循環正確。
它對我有用,所以也許這就是沒有錯誤的原因。 很抱歉這個問題,但您的揚聲器是否打開; 您的系統是否正在播放來自其他來源的聲音... cd、mp3 播放器?
我用過 play(0, 1000); @Goose 提到了,效果很好; 簡單有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.