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 回だけ再生することです。

いくつかの質問があると思います: 1. 10 個の異なる MP3 ファイルを処理するには、10 個の埋め込み/クラスを使用するのが最善の方法ですか? 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 に答える