![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Есть код:
function loadLibrary(name,path) {
var url:URLRequest = new URLRequest(path);
//КАК ЗДЕСЬ ПЕРЕДАТЬ ПАРАМЕТР NAME в функцию onLibraryLoaded
var l:Loader = new Loader();
l.contentLoaderInfo.addEventListener(Event.COMPLETE, onLibraryLoaded);
l.load(url);
}
private function onLibraryLoaded(e:Event){ //загрука карты прошла успешно
//КАК ЗДЕСЬ ПОЛУЧИТЬ ПАРАМЕТР NAME???
}
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Вы знаете, что такое поля класса? Если в один момент времени может грузится только одна либа, то используйте поле класса для хранения данных. Если нет, то напишите наследника Loader с необходимыми полями и грузите через него. Соответственно, при получении события, можно сослаться на target и получить необходимые данные. Либо написать делегата:
function resizeHandler(event:Event, ...rest):void {
trace(event, rest);
}
var delegate:Function = function(scope:Object, func:Function, ...rest):Function {
return function(...args):void {
func.apply(scope, args.concat(rest));
}
}
super.stage.addEventListener(Event.RESIZE, delegate(this, this.resizeHandler, 1, 2, 3));
Последний раз редактировалось etc; 01.02.2008 в 05:02. |
|
|||||
|
Мне тоже Delegate очень помог.
>Хотя этот вариант не очень хорош. А в чем его недостатки?
__________________
Сам себе репортер |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
В том, что отписаться от такого обработчика сложно. Это как минимум.
|
|
|||||
|
ну например можно написать класс типа
//ChangeDateEvent.as
package Loaders.ModulesLoader
{
import flash.events.Event;
public class ChangeDateEvent extends Event
{
public static const DATE:String="DATE";
private var _dateValue:Date;
public function ChangeDateEvent(type:String, date:Date)
{
this.dateValue = date;
super(type);
}
public function set dateValue(value:Date):void
{
_dateValue = value;
}
public function get dateValue():Date
{
return _dateValue;
}
}
}
__________________
Работаю |
|
|||||
|
Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
|
расширять класс Event своим классом и передавать всё что нужно
|
|
|||||
|
Я тоже раньше думал что кастомные события покрывают весь спектор возможных случаев, пока не столкнулся с необходимостью передавать параметр.
__________________
Сам себе репортер |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
У меня никогда не возникало ситуации, когда нужен подобный делегат. Snut, геттер и сеттер в событии не нужен, нужна обычная публичная переменная (кроме случаев, когда нужно сделать возможность указания значения только в конструкторе, тогда пишется только геттер). А ещё надо описывать метод clone(), иначе при всплытии события придёт не то событие, которое ожидаешь. Последний раз редактировалось etc; 28.02.2008 в 10:03. |
|
|||||
|
Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
|
package {
import flash.events.Event;
public class MyEvent extends Event {
public static var COOL_EVENT:String = "COOL_EVENT";
public var param:*;
public function MyEvent(type:String, param:*) {
this.param = param;
super(type);
}
}
}
.......
//кастомный евент для dispatchera
dispatchEvent(new MyEvent(MyEvent.COOL_EVENT, myParam));
Последний раз редактировалось CrazyFlasher; 28.02.2008 в 13:28. |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:28. |
|
|
« Предыдущая тема | Следующая тема » |
|
|