15.3.给声音数据设置缓冲

问题
我想让声音播放的更流畅些
解决办法
通过SoundLoaderContext类设置缓冲时间
讨论
Sound类播放声音的方式是把整个声音数据载入完毕才进行播放,这对于小文件可能没什么问题,但如果是个大的声音文件,我们更希望边载入边播放,减少等待时间,更利于用户体验。

根据声音的编码和网络宽带,有时候声音播放的速度可能比下载的速度还要快,这种情况下声音播放就会暂停等待数据下载,为了更好的处理这个环节,我们可以设置一个数据缓冲区,当声音数据下载到一定数量时再进行播放,这样的话即使下载速度偶尔变慢也不会影响正常播放。

默认下Sound对象只创建1秒钟的缓冲,也就是说要想立即播放也需要等待1秒钟的缓冲,缓冲区的数据播放完后要想再次播放还要至少等1秒钟缓冲时间。

如果不能确定网络状况或该声音文件的编码是高比特位的(每秒需要更多的比特信息),这时需要提高缓冲区大小以使播放的更流畅。创建SoundLoaderContext对象,构造器参数为缓冲的大小,单位为毫秒,如下面的代码创建了5秒缓冲:
+展开
-ActionScript
buffer = new SoundLoaderContext(5000);

下面两种写法都可:
+展开
-ActionScript
var request:URLRequest = new URLRequest("song.mp3");
var buffer:SoundLoaderContext = new SoundLoaderContext(5000);
_sound = new Sound(request, buffer);
_sound.play( );

或者:
+展开
-ActionScript
var request:URLRequest = new URLRequest("song.mp3");
var buffer:SoundLoaderContext = new SoundLoaderContext(5000);
_sound = new Sound( );
_sound.load(request, buffer);
_sound.play( );

加支付宝好友偷能量挖...


评论(0)网络
阅读(107)喜欢(0)flash/flex/fcs/AIR