在适用于iOS和Android的AIR应用程序中播放MP3

时间:2013-02-06 23:53:38

标签: actionscript-3 air

我想知道是否有人可以在为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

由于

1 个答案:

答案 0 :(得分: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);
}