通过ProgressEvent更新标签上的字节数

时间:2009-05-27 19:13:15

标签: flash actionscript-3 flex3 flexbuilder

我有main.mxml和外部类com.audio.AudioPlayer.as

AudioPlayer加载一个音频文件,并有一个用于计算bytesLoaded和bytesTotal的事件。

我想连续推送bytesLoaded信息,因为它被加载到来自ProgressEvent.PROGRESS的main.mxml上的标签中

snd.addEventListener(ProgressEvent.PROGRESS, listenProgress);


    private function listenProgress(event:ProgressEvent):void
    {
        progressID.text = event.bytesLoaded + " / " + event.bytesTotal;
    }

我无法找到一种方法来定位main.mxml中的标签控件,从AudioPlayer内部开始,并不断更新字节数。

任何帮助,非常感谢...

2 个答案:

答案 0 :(得分:0)

在AudioPlayer中创建一个可绑定变量,并在事件处理程序中将其设置为正确的值。

在您的mxml中,将标签的文本绑定到该值。

答案 1 :(得分:0)

好吧我想出了一个解决方法。在AudioPlayer.as中我声明:

public var snd:Sound = new Sound();
在main.mxml中的

我添加了snd的事件监听器:

newAudio.snd.addEventListener(Event.COMPLETE, onSoundComplete);
newAudio.snd.addEventListener(ProgressEvent.PROGRESS, listenProgress);

...这样做我可以通过声明:

来更新我的mxml控件
[Bindable] private var progUpdate:String;

<mx:Label text="{progUpdate}" x="254.75" y="46" width="506.5" />

所以基本上我只是将eventListeners从AudioPlayer类移到了文档类中。