Функция, вызываемая слушателем, может иметь только один аргумент, который является событием, инициирующим ее.
listener:Function
- Функция слушателя, которая обрабатывает событие.Эта функция должна принимать объект Event как единственный параметр и не должна возвращать ничего, как показано в следующем примере:
function(evt:Event):void
Источник
Эту проблему можно обойти, вызвав функцию, вызванную событием, вызовом другой функции с необходимыми аргументами:
timer.addEventListener(TimerEvent.TIMER, _saveChat);
function _saveChat(e:TimerEvent):void
{
saveChat(arg, arg, arg);
}
function saveChat(arg1:type, arg2:type, arg3:type):void
{
// Your logic.
}
Еще одна вещь, которую вы можете сделать, создать собственный класс событий, который расширяет flash.events.Event
и создать нужные вам свойства.
package
{
import flash.events.Event;
public class CustomEvent extends Event
{
// Your custom event 'types'.
public static const SAVE_CHAT:String = "saveChat";
// Your custom properties.
public var username:String;
public var chatBoxText:String;
// Constructor.
public function CustomEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false):void
{
super(type, bubbles, cancelable);
}
}
}
Затем вы можете отправить это с определенными свойствами:
timer.addEventListener(TimerEvent.TIMER, _saveChat);
function _saveChat(e:TimerEvent):void
{
var evt:CustomEvent = new CustomEvent(CustomEvent.SAVE_CHAT);
evt.username = "Marty";
evt.chatBoxText = "Custom events are easy.";
dispatchEvent(evt);
}
И послушай это:
addEventListener(CustomEvent.SAVE_CHAT, saveChat);
function saveChat(e:CustomEvent):void
{
trace(e.username + ": " + e.chatBoxText);
// Output: Marty: Custom events are easy.
}