2012-04-18 55 views
0

我当前正在播放的音频文件,逐步像这样确定:当音频是准备玩

import flash.media.Sound; 
import flash.media.SoundLoaderContext; 
import flash.net.URLRequest; 

var s:Sound = new Sound(); 
var context:SoundLoaderContext = new SoundLoaderContext(5000, false); 

s.load(new URLRequest('AUDIO URL'), context); 
s.play(); 

伟大的工程,但我想知道什么时候有足够的数据(基于缓冲时间)和开始播放文件。为了澄清,我不想确定何时该文件已完全下载,我知道这是完成与Event.COMPLETE

回答

1

如何使用ProgressEvent

s.addEventListener(ProgressEvent.PROGRESS, progressHandler); 

function progressHandler(event:ProgressEvent):void { 

    trace(event.bytesLoaded); 
} 

所以当bytesloaded等于缓冲区量时,你就知道了。


编辑:

也许你可以检查该isBuffering属性,看看是否缓冲区填满或没有。

+0

这种方法不适用于不同的比特率(即一个128k比特率的文件与具有64k比特率的文件不会有相同的相对缓冲时间,这很重要,因为如果比特率很高,只需要一秒钟或者可能加载了两个文件)。 – nathanjosiah 2012-04-18 15:37:09

+0

也许你可以使用isBuffering属性。 – loxxy 2012-04-18 18:10:35

+0

我会尝试。 – nathanjosiah 2012-04-18 19:08:11