Опыта в AS3 у меня пока немного - решение может оказаться с точки зрения "рентабильности" сомнительное, не знаю по какой причине .... но как бы там ни было - оно работает и выполняет именно то, что нужно. А нужно следующее:
отправлять событие из любой точки (уровня) приложения и ловить его сразу в любой точке (на любом уровне). Допускаю, что наверное есть какой-нибудь специально предназначенный для этого "TopLevelSuperPuperRoot" - но т.к. знаю я не много, и такового пока не встречал. По поводу обхода дерева-событий - тут как-раз нужно чтобы больше никто никуда дальше не ходил ... хотя если понадобиться, я думаю решение будет очевидно.
В общем-то созрело пока следующее решение:

Код AS3:
/* EventsManager.as */
package components
{
import flash.events.EventDispatcher;
public final class EventsManager{
public static const EDIT_ITEM:String = "editItem";
public static const eventListener:EventDispatcher = new EventDispatcher();
}
}
/* SomeComponent.as */
package components
{
import spark.components.List;
import components.*;
public class SomeComponent extends List
{
public function SomeComponent()
{
super();
EventsManager.eventListener.addEventListener(
EventsManager.EDIT_ITEM,
function():void
{
trace('closer');
});
}
}
}
/* ну и где-то в тридевятом царстве, в частности в customItemRenderer-е */
EventsManager.eventListener.dispatchEvent(new ListItemEvent(EventsManager.EDIT_ITEM, data));
Несколько моментов (поправьте пожалуйста если че не то говорю - буду признателен):
1) final прикрутил для красоты

2) public static
const eventListener - думаю так правильнее будет
И еще нарисовался интересный баг. Если использовать не closer а нечто вроде

Код AS3:
EventsManager.eventListener.addEventListener(
EventsManager.EDIT_ITEM,
_someHandler);
private function _someHandler(e:ListItemEvent):void
{
trace('handler');
};
то работает, если класс написан с нуля. Стоит, к примеру, поменять
public static
const eventListener
на
public static
var eventListener
то все сразу вываливается и _someHandler перестает срабатывать, даже если потом все назад вернуть - очень странное поведение. А через closer работает как часы. Могу предположить (знания мало, поэтому чисто теоретически), что какой-нибудь сборщик мусора собирает чего-нибудь куда-нибудь ибо экземпляра как-такового нет, хотя почему тогда работает первый раз, пока ручками не залезешь что-нить править? Никаких weakReference я не использую. FB и сам Flex самые последние, плеер тоже. (номера версий лень смотреть)
Знающий народ - ответьте плиз - что за баг такой странный?