我正在尝试在我的项目背景中播放音频文件,但到目前为止到目前为止还没有成功。这是我到目前为止所得到的。
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();
}
}
}
}
这只是为了播放外部音频文件并让它不断循环。
答案 0 :(得分:0)
您可以在.play()
方法中添加参数,而不是让声音完成时再次播放声音的事件侦听器。第一个参数表示您希望它开始播放的声音在哪一点,第二个参数表示您希望它播放多少次,如果您想要应用声音变换,则使用第三个参数。在您的情况下,您可以执行.play(0, int.MAX_VALUE);
这将为您提供您正在寻找的连续循环。
答案 1 :(得分:0)
“问题在于它根本没有播放任何东西。”
我复制了你的代码并创建了一个AS3类文件(替换了我自己的本地MP3 URL) 然后创建一个AS3文件,其中包含以下内容:
import Music;
var mus:Music = new Music();
然后跑了。声音播放和循环正确。
它对我有用,所以也许这就是为什么没有错误。对不起,问题是您的发言人;你的系统是从另一个源播放声音... cd,mp3 player?
我用过这个游戏(0,1000); @Goose提到并且效果很好;简单而有效。