0

我想知道是否有人可以阐明在为 iOS 和 Android 构建的 AIR 应用程序中嵌入、选择和播放音频文件的最佳方法?

我有一个应用程序,用户可以在其中从 10 个音频文件的列表中选择要播放的文件。当滑块向左或向右移动时选择这些。

我目前将创建 10 个单独的嵌入片段和类

[Embed(source="assets/audio/file1.mp3)]
public static const file1:Class;

[Embed(source="assets/audio/file2.mp3)]
public static const file2:Class;
...

然后在应用程序中初始化每个类,以便我可以引用它们。然后只需调用

file1.play();

问题是这只在我希望声音看到的地方播放一次声音,直到用户选择另一个声音。

我猜有几个问题: 1. 拥有 10 个嵌入/类是处理 10 个不同 MP3 文件的最佳方式吗?2. 如何无缝循环播放 MP3

谢谢

4

1 回答 1

1

您存储了用户选择的 Array 或 Vector mp3 文件 URL。播放 mp3 文件结束。从 Array, Vector 加载下一个 URL。

var sound:Sound = new Sound();
var soundChannel:SoundChannel;
var currentIndex:int = 0;

var mp3List:Vector.<String> = new Vector.<String>();
//only stored user selected mp3 url

sound.addEventListener(Event.COMPLETE, onMp3LoadComplete);

sound.load(mp3List[currentIndex]);

function onMp3LoadComplete(e:Event):void
{
    sound.removeEventListener(Event.COMPLETE, onMp3LoadComplete);
    soundChannel = sound.play();
    soundChannel.addEventListener(Event.SOUND_COMPLETE, onSoundChannelSoundComplete);
}

function onSoundChannelSoundComplete(e:Event):void
{
    e.currentTarget.removeEventListener(Event.SOUND_COMPLETE, onSoundChannelSoundComplete);
    currentIndex++;
    if(currentIndex==mp3List.length) currentIndex = 0;
    sound.load(mp3List[currentIndex]);
    soundChannel = sound.play();
    sound.addEventListener(Event.COMPLETE, onMp3LoadComplete);
}
于 2013-02-07T01:11:04.673 回答