Показать сообщение отдельно
Старый 19.06.2013, 16:59
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 5  
Ответить с цитированием
Akopalipsis
Banned

Регистрация: Mar 2013
Сообщений: 1,864
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() ;
		}
 
	}
 
}


Последний раз редактировалось Akopalipsis; 19.06.2013 в 18:03.