2013-05-30 2 views
0

Мне нужно создать функцию события, в которой есть параметры, которые вы передадите, что будет выглядеть примерно так.Функция события Flash AS3 с аргументами

public function foo(e:Event, args) 
    { 
     trace(args[0]); 
    } 


    addEventListener("fooEvent", foo); 
    dispatchEvent(new Event("fooEvent", true), args); 

В любом случае, что я мог бы сделать это? Спасибо, парни.

+2

Вы бы создать пользовательское событие с помощью подклассов Event и добавление ваших настраиваемых аргументов к этому объекту события. Таким образом, система событий предназначена для использования. :) –

+4

Посмотрите эту ссылку для получения дополнительной справки http://cookbooks.adobe.com/post_AS3__Creating_and_dispatching_Custom_Events-17609.html –

ответ

0

Попробуйте это:

package { 
    import flash.events.Event; 

    public class CustomEvent extends Event { 
    public var params:Object; 

    public function CustomEvent(type:String, paramsObj:Object = null, bubbles:Boolean = true, cancelable:Boolean = true) { 
     super(type, bubbles, cancelable); 

     if (paramsObj) { 
     params = paramsObj; 
     } 
    } 

    public override function clone():Event{ 
     return new CustomEvent(type, params, bubbles, cancelable); 
    } 

    public override function toString():String{ 
     return formatToString("CustomEvent", "params", "type", "bubbles", "cancelable"); 
    } 
    } 
} 

Вы можете структурировать событие, как:

dispatchEvent(new CustomEvent("fooEvent", {param1:"foo", param2:"bar"})) 

и извлекать данные, такие как:

addEventListener("fooEvent", function(event:CustomEvent):void { 
    trace("param1: " + event.params.param1); 
    trace("param2: " + event.params.param2); 
}); 
Смежные вопросы