我正在开发一个 iOS 节拍器网络应用程序。由于移动版 Safari 一次只能播放一种声音,我正在尝试创建一个“音频精灵”——我可以在其中使用单个音轨的不同片段来生成不同的声音。我有一个 1 秒的剪辑,上面有 2 个半秒的声音。
<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 示例)但无济于事。
我看过Remy Sharp 关于音频精灵的帖子,但是(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中使用。