3

howler.js でいくつかのサウンドを再生する必要がありますが、それをチェーンする方法がわかりません。

たとえば、文字列 BCG で

b.ogg、次に c.ogg、最後に g.ogg を再生する必要があります。

(ロード後)使用するだけの場合:

sound.play('b');
sound.play('c');
sound.play('g');

それらはすべて開始して重複しますが、これは私が必要としているものではありません。

onend プロパティがあるようですが、適切に使用する方法がわかりません。

よろしく。

4

3 に答える 3

6

これが私の簡単な解決策です。小さなファイルを使用しているため、ダウンロードの遅延は問題になりません。この場合、サウンドはグローバルです

function play_audio(file_names) {
    sound = new Howl({
        src: [audio_url+file_names[0]],
        volume: 0.5,
        onend: function() {
            file_names.shift();
            if (file_names.length > 0) {
                play_audio(file_names);
            }
        }
    });      
    sound.play();
}
于 2017-08-02T13:54:52.030 に答える
5

スプライトを必要としないこのコードを使用できます(jsfiddleGithubの問題):

var playlist = function(e) {
    // initialisation:
      pCount = 0;
      playlistUrls = [
        "https://upload.wikimedia.org/wikipedia/commons/8/8a/Zh-Beijing.ogg",
        "https://upload.wikimedia.org/wikipedia/commons/8/8a/Zh-Beijing.ogg",
        "./audio/a.mp3",
        "./audio/b.mp3",
        "./audio/c.mp3",
        "./audio/d.mp3"
        ], // audio list
      howlerBank = [],
      loop = true;

    // playing i+1 audio (= chaining audio files)
    var onEnd = function(e) {
      if (loop === true ) { pCount = (pCount + 1 !== howlerBank.length)? pCount + 1 : 0; }
      else { pCount = pCount + 1; }
      howlerBank[pCount].play();
    };

    // build up howlerBank:     
    playlistUrls.forEach(function(current, i) {   
      howlerBank.push(new Howl({ urls: [playlistUrls[i]], onend: onEnd, buffer: true }))
    });

    // initiate the whole :
        howlerBank[0].play();
}

バリエーションを作成した場合は、バリエーションを共有してください。

于 2014-10-04T15:09:44.607 に答える