私はiOSメトロノームWebアプリに取り組んでいます。モバイルSafariは一度に1つのサウンドしか再生できないため、「オーディオスプライト」を作成しようとしています。ここでは、1つのオーディオトラックのさまざまなセグメントを使用してさまざまなサウンドを生成できます。1秒のクリップに2つの0.5秒のサウンドがあります。
<audio id="sample" src="sounds.mp3"></audio>
<a href="javascript:play1();">Play1</a>
<a href="javascript:play2();">Play2</a>
<a href="javascript:pauseAudio();">Pause</a>
<script>
var audio = document.getElementById('click');
function play1(){
audio.currentTime = 0;
audio.play();
// This is the problem area
audio.addEventListener('timeupdate', function (){
if (currentTime >= 0.5) {
audio.pause();
}
}, false);
}
function play2(){
audio.currentTime = 0.5;
audio.play();
}
function pause(){
audio.pause();
}
</script>
JSFiddleでご覧ください。
ご覧のとおり、「timeupdate」イベント(jPlayerの例)を使用しようとしましたが、役に立ちませんでした。
オーディオスプライトに関するRemySharpの投稿を見たことがありますが、(A)それを機能させることができず、(B)ライブラリへの依存を避けたいと思います。
何か案は?
アップデート
私は今それを使用して動作していsetInterval
ます:
function play1(){
audio.currentTime = 0;
audio.play();
int = setInterval(function() {
if (audio.currentTime > 0.4) {
audio.pause();
clearInterval(int);
}
}, 10);
}
function play2(){
clearInterval(int);
audio.currentTime = 0.5;
audio.play();
}
シーケンスと設定/クリア間隔にいくつかの問題がありますが、私の目的では、それは機能しているようです。
PS誰かがこれを修正した場合、これはゲームとインターフェイスサウンドFXで使用できます。