Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.08.2011, 23:01
savva вне форума Посмотреть профиль Отправить личное сообщение для savva Найти все сообщения от savva
  № 1  
Ответить с цитированием
savva
[+ 06.08.11]

Регистрация: 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 и подвинуть).

Старый 02.08.2011, 23:09
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 2  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
1
Код AS3:
new Controller(this);
2 Зависит от его функций. Теоретически он может ничего не расширять.
3 Лучше типизированно, если есть возможность. Работать как с обычным массивом. О создании вектора в доке написано с примерами.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 02.08.2011, 23:11
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 3  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Контроллер ничего такого не делает. Это чистая вьюшка. Именно она содержит в себе всю логику клавиатуры-мыши. Контроллер только пишет в модель и связывается с сервером.
И еще, один вопрос - одна тема.
__________________
тут я

Старый 03.08.2011, 03:32
savva вне форума Посмотреть профиль Отправить личное сообщение для savva Найти все сообщения от savva
  № 4  
Ответить с цитированием
savva
[+ 06.08.11]

Регистрация: Jul 2011
Сообщений: 79
Ну моей программе не нужно связываться с сервером,просто хотелось бы сделать отдельный модуль(как в паскале) для всех events моей сцены.Поскольку as3 ооп язык придётся делать класс.

Что значит
Код AS3:
new Controller(this);
Код:
this=stage?
Мне в контроллер нужно будет передавать несколько параметром(список объектов список камер).

В доке Adobe вы имеете ввиду?

Что значит чистая вьюшка?Есть иная?
Просто если я сделаю
Код AS3:
public class MyControl extends Sprite
То я смогу свободно пользоваться stage без передачи в конструктор?
Кстати stage какой тип имеет? InteractiveObject?

У меня обычно несколько вопросов и они связаны,не создавать же отдельные темы.

Update. Перечитал и понял что вы про alternativa3D.


Последний раз редактировалось savva; 03.08.2011 в 03:35.
Создать новую тему Ответ Часовой пояс GMT +4, время: 04:21.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 04:21.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.