配列と for ループを使用して、いくつかのハウルとハウル トリガー ボタンにインデックスを付けて名前を付けようとしています。
私が達成しようとしていることについて、この質問を参照しました: Howler - Random sound
私のものとの違いは、ランダムな側面がないことと、いくつかのメソッド呼び出しを追加したことです。
ハウルをループにトリガーするために使用されるボタンを追加していますが、それが失敗しているように見えます-つまり、ボタンがクリックされたときです。
いずれかのボタンがクリックされると、コンソールは次のように報告します
Uncaught TypeError: Cannot read property 'play' of undefined
。sounds[i].play();
sounds[i].pause();
JS は次のとおりです。
var sounds = ['sound1', 'sound2'];
var howls = {};
for (var i=0; i<sounds.length; i++) {
howls[sounds[i]] = new Howl({
urls: ['http://powellian.com/assets/audio/' + sounds[i] + '.mp3', 'http://powellian.com/assets/audio/' + sounds[i] + '.ogg'],
volume: 1,
onplay: function() {
console.log('Playing: ' + sounds[i]);
$(sounds[i]).removeClass('static').addClass('playing');
$(sounds[i] + ' span.ascii-play').addClass('hide');
$(sounds[i] + ' span.ascii-pause').removeClass('hide');
},
onpause: function() {
console.log('Paused: ' + sounds[i]);
$(sounds[i]).removeClass('playing').addClass('paused');
$(sounds[i] + ' span.ascii-play').removeClass('hide');
$(sounds[i] + ' span.ascii-pause').addClass('hide');
},
onend: function() {
console.log('Finished: ' + sounds[i]);
$(sounds[i]).removeClass().addClass('static');
$(sounds[i] + ' span.ascii-play').removeClass('hide');
$(sounds[i] + ' span.ascii-pause').addClass('hide');
}
});
// PLAY btn
$('#' + sounds[i] + ' span.ascii-play').on('click', function (e) {
sounds[i].play();
});
// PAUSE btn
$('#' + sounds[i] + ' span.ascii-pause').on('click', function (e) {
sounds[i].pause();
});
}
非配列/for ループ バージョンが 2 つの Howl で正常に動作していましたが、クラスの追加/削除は正常に動作するため、無視してください。
最終的には、アレイから 16 個のハウルを生成します。
マークアップ構造を含むフィドルは次のとおりです: Howler Fiddle
事前に感謝します。