Flex - Отправка пользовательского события при получении стандартного события - PullRequest
0 голосов
/ 12 марта 2009

Я обрабатываю 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))

Но, честно говоря, я не уверен, как поступить ...

Кто-нибудь может мне помочь? Спасибо!

1 Ответ

2 голосов
/ 12 марта 2009

Вам нужно сделать функцию слушателя - недостаточно вызова функции. Передача имени класса 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);

Конечно, декларировать собственный класс ошибок проще и менее подвержен ошибкам.

...