我正在尝试播放声音(mp3)从声音文件中的某个点开始。我希望它能在大多数移动设备上运行,它确实能运行,但Windows Phone 8似乎存在一个问题。它在三星Galaxy和iPhone上运行良好,但在WP上,声音总是从头开始,忽略currentTime设置。什么好主意吗?谢谢!
var sfile = "test.mp3';
var myobj;
function init()
{
myobj=document.createElement('audio');
myobj.style.position="relative";
myobj.style.bottom=0;
myobj.src = sfile;
myobj.id='sound';
document.body.insertBefore(myobj,document.body.lastChild);
myobj.load();
}
//called when pressing a button
function test()
{
myobj.currentTime=30.0;
myobj.play()
}
得到了更多关于这个的信息。原来你不能在调用play()之前设置currentTime。至少在Windows手机上是这样。所以我必须先调用play,然后(在x毫秒之后)我可以设置currentTime。
我现在的想法是在我的声音文件中加入一些沉默,并不断循环这种沉默。当我想播放声音时,我可以设置currentTime。当声音部分完成时,我只是再次启动沉默循环。使用多音轨会容易得多,但不幸的是我没有这个选择。
所以,在Windows phone 8上使用currentTime是可能的。然而,我遇到了另一个问题。因为我现在一直在播放声音,当手机进入睡眠模式时,javascript似乎会冻结(导致沉默循环停止),但无论如何都要播放声音。所以整个mp3文件会从头到尾播放。我尝试使用onfocusout事件来停止循环并暂停声音,但它不起作用。