Я работаю над веб-приложением с метрономом для iOS. Поскольку мобильное сафари может воспроизводить только один звук за раз , я пытаюсь создать «аудио-спрайт», где я могу использовать разные сегменты одной звуковой дорожки для создания разных звуков. У меня есть 1-секундный клип с двумя полусекундными звуками.
<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 ) безрезультатно.
Я видел Пост Реми Шарпа о звуковых спрайтах , но (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();
}
Есть некоторые проблемы с последовательностью и настройкой / очисткой интервалов, но для моей цели - похоже, работает.
JSFiddle
Спасибо!
P.S. Если у кого-то есть исправление, это может быть использовано в играх и интерфейсе Sound FX.