将数据从进度事件移动到另一个类

时间:2009-05-31 04:46:21

标签: flex flash actionscript-3 class

Flex中的

如果我有一个加载器类(即XMLLoader)和一个文档类(document.as),并且在document.as我实例化XMLLoader

var ldr:XMLLoader = new XMLLoader(url);

...并且在document.as类上有一个文本框,我希望通过使用URLLoaders进度事件不断更新XMLLoader的进度。意思是,该框将显示它收到的以字节为单位的负载

我不确定如何不断地将数据从事件中推出并将其添加到另一个类中。例如:

myLstnr.addEventListener(ProgressEvent.PROGRESS, getProgress);

private function getProgress():void
{
    // as progress updates, move it to document.as class's textbox
{

3 个答案:

答案 0 :(得分:0)

您的事件处理程序(getProcess)必须接受ProgressEvent作为参数。从那里,您将获得所需的信息。当你这样做时,只需将它写出到你想要的文本字段,例如

document.textfield.text = event.bytesLoaded;

答案 1 :(得分:0)

您可以从getProgress()内部向其他类调度事件。 Creating custom events

答案 2 :(得分:0)

您需要重新调度ProgressEvent。您可以使用自定义事件来存储事件对象。例如:

private function getProgress(event:ProgressEvent):void {
    dispatchEvent(new CustomObjectDataEvent(event, 'progress'));
}

CustomObjectDataEvent是您创建的自定义事件类,用于在自定义事件对象中存储对象(ProgressEvent)。以下是存储此对象的自定义事件的示例实现:

package events
{
    import flash.events.Event;

    public class CustomObjectDataEvent extends Event
    {
        public var objectData:Object;

        public function CustomObjectDataEvent(objectData:Object, type:String, bubbles:Boolean=false) {
            super(type, bubbles);
            this.objectData = objectData;
        }

        public override function clone():Event {
            return new CustomObjectDataEvent(objectData, type, bubbles);
        }
    }
}

有关调度自定义事件的详细信息,请查看:http://livedocs.adobe.com/flex/3/html/createevents_3.html