Его и не нужно добавлять, я просто пытаюсь воссоздать Ваш код, примерно, как это работает.
В основном классе, где всё происходит, у Вас доступ к stage есть? (Нужна возможность добавить экземпляр в список отображения)
Если есть доступ, то ниже пример, немного изменил код, если доступа нет, можете не смотреть код.
1. класс, имеющий доступ к Stage.
Код AS3:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
public class Main extends Sprite
{
var communication:Sprite; // класс, который должен иметь доступ к stage.
var mapka:map; // карта.
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
communication = new Sprite();
communication.name = "communication";
stage.addChild(communication); // если есть возможность сделать вот это, то это всё будет работать.
mapka = new map();
stage.addChild(mapka);
// саму мапку Вы не добавляете, я же добавляю,
//чтобы воссоздать Ваш случай, если она у Вас получает события, то мне нужно,
//чтобы она получала их тоже, поэтому я добавляю на сцену.
mapka.addEventListener(MouseEvent.MOUSE_DOWN, mapkaListener);
stage.addEventListener(MouseEvent.MOUSE_DOWN, stageListener);
}
private function mapkaListener(e:MouseEvent):void {
trace("mapka mouse down!");
communication.dispatchEvent(e); // перенаправляю событие для stage'a.
}
private function stageListener(e:MouseEvent):void {
if (e.target == communication){
trace("stage mouse down!" + "событие пришло из = " + e.target.name);
}
}
}
}
2. класс, представляющий map'у.
Код AS3:
package
{
import flash.display.Sprite;
public class map extends Sprite
{
public function map()
{
graphics.lineStyle(1);
graphics.beginFill(0x000000);
graphics.drawCircle(100, 150, 50);
}
}
}
P.S. Или у Вас проблема в том, что Вы не можете обрабатывать события для карты вообще? Т.е они в никуда летят?