Привет.
Пара вопросов
Main.as

Код AS3:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.display.DisplayObject;
import elements.Tower;
import flash.events.MouseEvent;
/**
* ...
* @author reQuiem
*/
public class Main extends Sprite
{
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
addTower();
}
private function addTower():void
{
var tower_1: Tower = new Tower();
this.addChild(tower_1);
tower_1.x = 300;
tower_1.y = 300;
tower_1.addEventListener("towerClick", towerClicked);
trace("tower ready");
}
public function towerClicked (e:Event): void
{
trace("tower clicked");
stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveFunc);
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUPFunc);
}
private function mouseMoveFunc (e:MouseEvent ):void
{
trace("mouse MOVE");
}
private function mouseUPFunc (e:MouseEvent ):void
{
stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveFunc);
}
}
}
Tower.as

Код AS3:
package elements
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.display.DisplayObject;
import flash.events.EventDispatcher;
/**
* ...
* @author reQuiem
*/
public class Tower extends MovieClip
{
public function Tower()
{
this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownFunc);
}
public function mouseMoveFunc():void
{
trace("OK");
}
public function mouseDownFunc(e:MouseEvent): void
{
dispatchEvent(new Event("towerClick"));
}
}
}
Вопросы:
1)Если я диспатчу событие из класса то подписать на это событие я мог только экземпляр этого класса?
просто addEventListener("towerClick", towerClicked); не ловит, а tower_1.addEventListener("towerClick", towerClicked); ловит.
2) не получается вызвать методы( и менять значение переменных) через экземпляр класса в функции отлично от той где я его создаю.
то есть сейчас в мейне у меня есть

Код AS3:
var tower_1: Tower = new Tower();
this.addChild(tower_1);
tower_1.x = 300;
но если я попытаюсь изменить tower_1.x в любом другом месте - выдает ошибку. ( в это время tower_1 гарантированно существует и например ловит\кастует события).
Вот пока все. Знаю что вопросы очень нубские но пытаясь пересесть кадров они мне пока не даются.
Спасибо.