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

Apache flex 将数据从进度事件移动到另一个类,apache-flex,flash,actionscript-3,class,Apache Flex,Flash,Actionscript 3,Class,在Flex中,如果我有一个加载器类(即XMLLoader)和一个文档类(document.as),那么在document.as中,我将实例化XMLLoader var ldr:XMLLoader = new XMLLoader(url); 。。。在document.as类中,我有一个文本框,我希望通过使用URLLoaders progress事件不断地使用XMLLoader的进度来更新该文本框。这意味着,该框将以字节为单位显示它正在接收的负载 我不知道如何不断地将数据从事件中推送到另一个类中。

在Flex中,如果我有一个加载器类(即XMLLoader)和一个文档类(document.as),那么在document.as中,我将实例化XMLLoader

var ldr:XMLLoader = new XMLLoader(url);
。。。在document.as类中,我有一个文本框,我希望通过使用URLLoaders progress事件不断地使用XMLLoader的进度来更新该文本框。这意味着,该框将以字节为单位显示它正在接收的负载

我不知道如何不断地将数据从事件中推送到另一个类中。例如:

myLstnr.addEventListener(ProgressEvent.PROGRESS, getProgress);

private function getProgress():void
{
    // as progress updates, move it to document.as class's textbox
{
private function getProgress(event:ProgressEvent):void {
    dispatchEvent(new CustomObjectDataEvent(event, 'progress'));
}
事件处理程序(getProcess)必须接受ProgressEvent作为参数。从中,您可以获得所需的信息。当您这样做时,只需将其写在您想要的文本字段中,例如

document.textfield.text = event.bytesLoaded;

您可以从getProgress()内部将事件分派给另一个类

您将希望重新分派ProgressEvent。可以使用自定义事件来存储事件对象。例如:

myLstnr.addEventListener(ProgressEvent.PROGRESS, getProgress);

private function getProgress():void
{
    // as progress updates, move it to document.as class's textbox
{
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);
        }
    }
}

签出:有关发送自定义事件的更多信息。

对不起,我认为这个问题被误解了。您是对的,在我的示例中,我忘了给getProcess()一个event:ProgressEvent的参数。但是,我的问题是,将数据从XMLLoader类中的进度事件移动到另一个类中的文本字段。(不好意思,我只是想强调一下)但问题出在哪里?你不知道如何获取对另一个对象的引用,你想将数据推送到另一个对象?是的,我想我没有正确地写出我的问题。我需要知道的是。在main.mxml类中,我有一个变量,我想从外部加载程序类中不断更新它。因此main.mxml有一个“[Bindable]var something:String;”绑定到标签控件。我希望label控件从外部类(特别是ProgressEventok)获取增量进度UDPate,那么如何从CustomObjectDataEvent中推/拉数据呢?换句话说,我该如何在main.mxml上,以增量方式更新已加载多少字节的控件。我通过将EventDispatcher和Dispatchegn扩展为一个自定义类来实现它。然而,我不明白这将如何运作。这似乎是一个更好的方法,但我就是不明白。事实上,这提出了一个观点。在外部类文件中创建自己的事件与从main.mxml在类的公共对象上添加事件侦听器之间有什么区别?