Зарегистрировать некоторые свойства в обработке событий
Я хочу показать несколько изображений для моего приложения
sourceAudioFile =(event.target as File);
sourceAudioFile.data;
var myLoader:Loader = new Loader();
var url :URLRequest = new URLRequest("file:///" + sourceAudioFile.nativePath);
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoaded);
myLoader.load(url);
Слушатель регистрации
private function onImageLoaded(e:Event):void
{
var image : Bitmap= new Bitmap(e.target.content.bitmapData);
image.scaleX = 0.5 ;
image.scaleY = 0.5 ;
}
Есть ли способ, с помощью которого я могу добавить некоторые пользовательские значения в Event.COMPLETE, чтобы узнать, какой тип изображения загружается.
как e.imageName, e.noOfImage, к которому я могу получить доступ в полном обработчике и предоставить ему значения при регистрации этого события.
заранее спасибо
3 ответа
Да, вы можете попробовать зарегистрировать событие как:
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,function(e:Event){
dispatchEvent(new CustomEvent(CustomEvent.COMPLETE, "<imageType>"));
}, false, 0, true);
И добавьте новый класс, расширяющий класс Event:
public class CustomEvent extends Event {
public static const COMPLETE:String = "CustomEventComplete";
public var imageType:String = "";
public function CustomEvent(type:String, imageType:String = "", bubbles:Boolean = false, cancelable:Boolean = false){
super(type, bubbles, cancelable);
this.imageType = imageType;
}
override public function clone():Event {
return new CustomEvent(type, customTarget, bubbles, cancelable);
}
}
Теперь вы можете зарегистрироваться на CustomEvent.COMPLETE и получить тип изображения в слушателе.
Да, есть простой способ:
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoaded(imageName, noOfImage));
myLoader.load(url);
function onImageLoaded(imageName:String, noOfImage:int):Function {
return function(e:Event):void {
// Respective "e", "imageName" and "noOfImage" are available for you here.
}
}
Если вам нужно удалить его позже, измените первую строку на:
var functionOnImageLoaded:Function = onImageLoaded(imageName, noOfImage);
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, functionOnImageLoaded);
А потом просто сделайте это так:
myLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, functionOnImageLoaded);
Я отвечал на это раньше. Смотрите это здесь.
Вы можете узнать, что было загружено, проверив свойство url LoaderInfo
private function onImageLoaded(e:Event):void
{
var cli:LoaderInfo = e.target as LoaderInfo;//you added listener to the contentLoaderInfo property
trace(cli.url);//url of the media being loaded
//do something with it
}
также в этом вопросе вы можете получить более сложные ответы на вашу проблему:)