Показать сообщение отдельно
Старый 29.05.2013, 15:31
Idon'tKnow вне форума Посмотреть профиль Отправить личное сообщение для Idon'tKnow Найти все сообщения от Idon'tKnow
  № 7  
Ответить с цитированием
Idon'tKnow

Регистрация: Apr 2013
Сообщений: 77
Его и не нужно добавлять, я просто пытаюсь воссоздать Ваш код, примерно, как это работает.
В основном классе, где всё происходит, у Вас доступ к 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. Или у Вас проблема в том, что Вы не можете обрабатывать события для карты вообще? Т.е они в никуда летят?


Последний раз редактировалось Idon'tKnow; 29.05.2013 в 15:46.