Ответ вроде.События не ограничиваются DisplayObjects, и когда они запускаются DisplayObjects, они не всегда следуют одному и тому же шаблону. Событие может очень зависеть от того, какой тип DisplayObject и было ли событие инициировано программно (через dispatchEvent) или изначально(щелчком мыши).Это также может варьироваться в зависимости от того, включено ли всплывающее окно или нет, и является ли оно настраиваемым событием.Например, событие завершения Loader не имеет смысла распространяться на родительские объекты, даже если Loader является экранным объектом.
Если вы пытаетесь выяснить родителей объекта, отправившего событие,тогда вы захотите что-то вроде этого:
import flash.events.Event;
import flash.events.MouseEvent;
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;
myDispatcher.addEventListener( MouseEvent.CLICK, clickHandler );
function clickHandler( event:MouseEvent ):void
{
// event.currentTarget is the object which you're listening to.
// event.target is the object which actually dispatched the event
// (if you're listening to a MovieClip and a button inside it is clicked,
// target will refer to the button, currentTarget the MovieClip)
var ancestry:Vector.<DisplayObjectContainer> = getAncestry( event.currentTarget as DisplayObject );
// do somethign with all of the parents.
}
// this function takes a DisplayObject and returns all of its ancestor objects
// all the way to the root as a Vector.
function getAncestry( obj:DisplayObject ):Vector.<DisplayObjectContainer>
{
var par:Object = obj.parent;
var ancestry:Vector.<DisplayObjectContainer> = new Vector.<DisplayObjectContainer>();
while( par )
{
par = par.parent;
ancestry.push( par as DisplayObject );
if( par == root ) break;//sometimes the root has a parent.
}
return ancestry;
}