我正试图从声音文件中的某个点开始播放声音(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()
}
答案 0 :(得分:1)
了解更多相关信息。事实证明,在进行play()调用之前,你无法设置currentTime。至少不在Windows手机上。所以我必须首先调用play然后(在x ms之后)我可以设置currentTime。
我现在的想法是在我的声音文件中保持沉默并循环不断地保持沉默。当我想播放声音时,我可以设置当前时间。声音部分结束后,我再次启动静音循环。使用多轨道要容易得多,但遗憾的是我没有这个选项。
因此,可以在Windows Phone 8上使用currentTime。但是我遇到了另一个问题。由于我现在一直在播放声音,当手机进入睡眠模式时,似乎javascript冻结(导致静音循环停止)但无论如何都要播放声音。所以整个mp3文件将从头到尾运行。我尝试使用onfocusout事件来停止循环并暂停声音,但它不起作用。将继续调查这种相当罕见和错误的行为。