Why not create your own array class that extends Array and implements the IEventDispatcher, override the push() function and make it dispatch an event when the function is called?
So something like:
package
{
import flash.events.EventDispatcher;
import flash.events.IEventDispatcher;
public class MyArray extends Array implements IEventDispatcher
{
public static var ARRAY_PUSHED:String = "MYARRAY_ARRAY_PUSHED";
private var dispatcher:EventDispatcher;
public function MyArray(...parameters)
{
super(parameters);
dispatcher = new EventDispatcher(this);
}
override public function push(...parameters):uint
{
dispatchEvent(ARRAY_PUSHED);
super.push(parameters);
}
public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int=0, useWeakReference:Boolean=false):void
{
dispatcher.addEventListener(type, listener, useCapture, priority);
}
public function dispatchEvent(e:Event):Boolean
{
return dispatcher.dispatchEvent(e);
}
public function hasEventListener(type:String):Boolean
{
return dispatcher.hasEventListener(type);
}
public function removeEventListener(type:String, listener:Function, useCapture:Boolean=false):void
{
dispatcher.removeEventListener(type, listener, useCapture);
}
public function willTrigger(type:String):Boolean
{
return dispatcher.willTrigger(type);
}
}
}