Показать сообщение отдельно
Старый 02.08.2011, 23:01
savva вне форума Посмотреть профиль Отправить личное сообщение для savva Найти все сообщения от savva
  № 1  
Ответить с цитированием
savva

Регистрация: Jul 2011
Сообщений: 79
По умолчанию Вынести Events в отдельный класс

Здравствуйте.

Есть класс Scene в котором находятся stage(инициализация(stagealign и прочее),добавление объектов и т.д.).

Естественно в этом классе происходит подписка всех событий(на stage подписывается события мыши и клавы(Ещё не добавил),на объекты подписываются события мыши).

Соответственно все подписки событий и функции типа
Код AS3:
private function onMouseDown (e:MouseEvent):void	
private function onMouseMove (e:Event):void
Хочется вынести в отдельный класс.
сейчас подписка у меня производится так
Код AS3:
private function onParceComplete(e:Event):void
			{
				e.target.removeEventListener(Event.COMPLETE, onParceComplete);
				addCamerafromXML(xmlpar.getCamarray());
				addObjectfromXML(xmlpar.getObjarray());
				AddEventsToStage();
			}
			private function AddEventsToStage():void
			{
			stage.addEventListener(MouseEvent.MOUSE_WHEEL, onMouseWheel);
			stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
			stage.addEventListener(MouseEvent.MOUSE_UP,onMouseUp);
			stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
			stage.addEventListener(Event.RESIZE, onResize);
			needEvents();
			}
		private function needEvents():void {
				for (var i:int = 0; i < MyObjArray.length; i++)
				{
				if (MyObjArray[i].needEvents())
				{
					ContArray[i].addEventListener(MouseEvent3D.MOUSE_OVER, onMouseOver);	
					ContArray[i].addEventListener(MouseEvent3D.MOUSE_OUT, OnMouseOut);	
					ContArray[i].addEventListener(MouseEvent3D.CLICK, onMouseClick);
				}
			}
		}
Соответственно как в класс контроллер передать stage. Объекты, камер(ы) думаю передавать в виде массивов.
Должен ли класс контроллера расширять Sprite или EventDispatcher?

И ещё хочется знать что лучше хранить объекты класс MyObject в Array или в Типизированном Vector<MyObject>? Если второе то можно примерчик использования?

Бонусный вопрос,для тех кто шарит в 3D в частности Alternativa3D 8
Когда работаешь просто во флэше без 3D. Объект отрисовывается на плоскости и чтобы его переместить мышью методом Drag&Drop достаточно присвоить значения x,y мыши объекту.

В случае с 3D когда присваиваешь объекту он в локальных координатах перемещается,а мне нужно(читай "хочется") чтобы он перемещался как в случае с 2D. Чтобы например передвинуть в глубь
поворачиваешь камеру и двигаешь.
Как сделать Drag&Drop 3D объекта как с 2D? (Завтра хочу попробовать e.target as Object и подвинуть).