Передача данных в событии

Очень часто бывает надо вместе с событием передать какие-либо данные. Однако, стандартный Event этого сделать не позволяет.

Но можно расширить Event своим классом, в который добавить свойство, для хранения данных:

package
{
import flash.events.Event;

public class DataEvent extends Event
{
private var _data:Object;

public function DataEvent(type:String, data:Object = null, bubbles:Boolean = false, cancelable:Boolean = false)
{
super(type, bubbles, cancelable);
_data = data;
}

public function get data():Object
{
return _data;
}
}
}

Теперь вместе с событием можно передавать любые данные, которые получатель сможет легко прочитать:

var sp:Sprite = new Sprite();
sp.addEventListener("customEvent", eventHandler);
sp.dispatchEvent(new DataEvent("customEvent", "данные");

function eventHandler(e:DataEvent)
{
trace(e.data);
}