0

我正在处理用户在以下代码中选择的多个文件的 FileReferenceList.fileList[]。

for (i=0;i < event.currentTarget.fileList.length; i ++){
 fileByteData = new ByteArray();
 fileByteData = (event.currentTarget.fileList[i].data as ByteArray);                
 loader = new Loader();
 loader.contentLoaderInfo.addEventListener(Event.COMPLETE, checkImageDimensions);
 loader.loadBytes(fileByteData);                    
}

我需要将 i 传递给 checkImageDimensions 以跟踪哪个图像是哪个,我可以轻松地创建一个自定义事件,但我需要在正确的时间触发它。理想情况下我可以做这样的事情..

var myEvent:CustomEvent = new CustomEvent(i);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, this.dispatchEvent(CustomEvent))

但老实说,我不确定如何进行......

谁能帮我吗?谢谢!

4

1 回答 1

2

您需要创建一个侦听器函数 - 函数调用是不够的。将类名传递给dispatchEvent也不起作用。这是如何做到的。

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void {
    dispatchEvent(new CustomEvent(i));
});

请注意,如果您在事件中只需要一个类型字符串,则不一定需要自定义事件类。在这种情况下,您可以简单地使用 Event 类:

public static const MY_CUSTOM_EVENT:String = "myCustomEvent";    
...
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void {
    dispatchEvent(new Event(MY_CUSTOM_EVENT));
});

编辑:如果您真的很懒,但仍想通过事件传递值,则可以使用DinamicEvent该类:

var evt:DynamicEvent = new DynamicEvent(MY_CUSTOM_EVENT);
evt.attr1 = val1;
evt.attr2 = val2;
dispatchEvent(evt);

当然,声明自己的错误类更简洁,更不容易出错。

于 2009-03-12T13:19:03.713 回答