郁闷了一上午,不写一下没天理了。
是这样的。用AS3的Sound做mp3播放,然后自己开发了一个暂停的功能。一般的做法是
1 soundchannel.stop()
2 pauseposition = soundchannel.position;
3 //-----
4 sound.play(pauseposition)
没错,如果把mp3放到本地测试是好的,可是如果放到网上通过http访问,暂停又播放可能时间不合拍,也就是说,播放的时间不是暂停的时间,可能延后一点,而且最后抛出soundComplete的时间也不是sound.length,比它小。最后还是通过google找到了一些资料,原来是bug!
http://www.actionscript.org/forums/showthread.php3?p=772180
这里由一个牛人自己开发了一套Sound2和SoundChannel2来弥补误差,很厉害啊,我试了一下,虽然还是有点误差,但是明显小很多了,最后soundComplete的时刻也完全正确了。
http://bugs.adobe.com/jira/browse/FP-33
flash player的bug报告。大概的意思呢就是mp3的samplerate如果不是44100Hz,就会造成sound.play的starttime参数不正确。我想如果反复暂停播放,就可能把误差拉大。