use*_*412 5 audio windows-phone-8
我正试图从声音文件中的某个点开始播放声音(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()
}
Run Code Online (Sandbox Code Playgroud)
得到了一些关于这方面的更多信息。事实证明,您无法在调用 play() 之前设置 currentTime。至少在 Windows Phone 上不是这样。所以我必须先调用 play,然后(x 毫秒后)我可以设置 currentTime。
我现在的想法是在我的声音文件中保留一些静音并连续循环播放该静音。当我想播放声音时,我只需设置 currentTime 即可。当声音部分完成后,我再次开始静音循环。使用多轨会容易得多,但不幸的是我没有这个选项。
因此,可以在Windows Phone 8上使用currentTime。但是我遇到了另一个问题。由于我现在一直在播放声音,因此当手机进入睡眠模式时,JavaScript 似乎会冻结(导致静音循环停止),但声音仍然会播放。所以整个 mp3 文件将从头到尾运行。我尝试使用 onfocusout 事件来停止循环并暂停声音,但它不起作用。将继续调查这种相当罕见且有缺陷的行为。