maincode Спасибо! Это я понимаю, программа на передачи
this в конструктор ,переводит фокус на класс
А и событие возникает раньше ,чем в
Main завершилась инициализация переменной.
Код с ошибкой я намеренно для примера привёл ,но не сумел правильно сформулировать вопрос.
Вопрос наверное звучать должен... да так он и должен - как лучше обыграть такую ситуацию!
Можно конечно код ,выполнение которого ,вызывает событие ,перенести в отдельный метод и в
Main
после передачи значения в класс
А и завершения инициализации ,вызвать этот метод.......
Но вот тут у меня пока не вяжется с правильностью таких действий. я грешу на себя и на отсутствие опыта ,тем более после чтения высказываний опытных людей ,которые то и дело говорят о ОПП!
После Вашего совета я прочёл статью о
MVC и в моей голове стало только больше туманности.
Там говорится ,что событие мыши ,нужно обрабатывать в другом классе ,да и то по событию чендж.
О том ,что чтобы код заработал ,нужно событие запускать с аргументом
null и выходит ,что это хорошо. Но я уверен ,что еслибы я выложил пример ,работа которого бы была такой же ,но названия бы были не
MVC ,то мне бы сказали ,что это не правильно)...
Но это я говорю не для того ,что бы сказать ,что кто то не так делает ,а для того ,чтобы по возможности вы понимали .какая каша у меня в голове и давали соответствующие ответы. И возвращаясь к теме - как лучше это сделать?
Добавлено через 4 минуты
Спасибо!)
Добавлено через 1 час 1 минуту
Вот наверное я и приблизился к моменту ,который расставит в моей голове ,все выше сказанное ,на свои места. Но для этого мне нужно понять вот что...Почему в
Main не срабатывает событие?

Код AS3:
package
{
import flash.display.Sprite;
import flash.events.Event;
public class Main extends Sprite
{
private var _a : A ;
private var _b : B ;
public function Main():void
{
_a = new A( ) ;
_a.addEventListener( Event.CHANGE , changeHandler ) ;
_b = new B( this );
}
private function changeHandler( e : Event ) : void
{
trace( e.type ) ;
}
}
}

Код AS3:
package {
import flash.events.Event;
import flash.events.EventDispatcher ;
public class A extends EventDispatcher{
public function A( ) {
}
public function go():void
{
trace( "i - A" ) ;
dispatchEvent( new Event ( Event.CHANGE ) ) ;
}
}
}

Код AS3:
package {
import flash.display.DisplayObjectContainer;
public class B {
private var _a : A ;
public function B( con : DisplayObjectContainer ) {
_a = new A() ;
_a.go() ;
}
}
}