|
|
|||||
Регистрация: Nov 2001
Адрес: Казань
Сообщений: 118
|
Проектирование игрового объекта
Создание игрового объекта (например, главный герой, пуля и т.п. Ну для понимания назовём базовый класс MyUnit) можно сделать двумя способами:
1) Унаследоваться от Sprite или MovieClip (например, MyUnit extends Sprite). Тогда экземпляр получившегося класса унаследует такие методы как alpha, x, y, событие ENTER_FRAME и т.д. В итоге получаем объект с расширенными свойствами и методами, который рисуем через addChild, удаляем через removeChild, можем слушать его ENTER_FRAME или CLICK, вообщем наследует всё от DisplayObject. 2) Сделать обёртку для графического представления объекта. Тогда, получаем объект, который может использовать всё то, что присуще классу Sprite или MovieClip плюс рассылка своих событий. Но есть одно "но" - нужно в классе обёртке либо прописать методы-аналоги addChild (например, draw()) и все подобные, или просто иметь прямую ссылку на графический символ для осуществления манипуляций над ним. Описание конечно получилось сумбурным... Для тех, кто понятно и имеет опыт, поделитесь, какой метод удобнее, или может моё представление неверно? |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Разделяйте данные и вьюверы.
|
|
|||||
Регистрация: Nov 2001
Адрес: Казань
Сообщений: 118
|
Хех... И то верно - перемудрил.
Тогда у меня такой вопрос: Хорошо, допустим, у нас есть игровой объект, который имеет несколько состояний. Причём эти состояния могу изменяться с какими-нибудь эффектами. Т.е. получается, что надо сделать Модель объекта, "рендер" сцены, который будет отображать изменения множества объектов. А вот как сделать смену состояний одного объекта (с эффектами), ведь каждый игровой объект уникален и обладает своей механикой? Если я правильно понимаю, то надо сделать мини-рендер, который будет привязан только к определённому типу игровых объектов для смены состояний? |
|
|||||
1. Не вижу принципиальной разницы, между двумя этими способами. Что мешает отправлять события в первом случае?
2. Если речь идет о флеше, тогда что мешает сделать linkage на свой класс который наследуется от Sprite или MovieClip? И уже в нем прописать все поведение объекта. И просто добавлять этот объект посредством addChild и удалять с помощью removeChild Последний раз редактировалось alatar; 22.04.2009 в 20:16. |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Cybo, модель изменяет состояние = изменяет состояние вьювер.
|
|
|||||
Цитата:
|
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Ну-ка ну-ка, весьма интересно.
Можно простенький пример вьювера и модели? Как я понимаю создается модель, которая делает просчеты и в нужные моменты изменяет свойства вьювера, так?
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Модель ничего не делает с вьювером. Это сам вьювер слушает события модели и при необходимости делает какие-то телодвижения.
Писать пример влом, это обыкновенный MVC |
|
|||||
Регистрация: Nov 2001
Адрес: Казань
Сообщений: 118
|
Вообщем, Модель хранит только состояния объекта - это чёрный ящик с набором методов и "генератором" событий. Контроллер - в зависимости от входящих сигналов (с помощью методов и обработки событий) управляет состояниями модели. Вид - "корчит рожи" в зависимости от состояния модели и команд контроллера. Как-то так.
|
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
То есть вьювер получает ссылку/создает в себе модель, подписывается на его события и изменяет состояние?
Хм. а если надо изменять позицию каждый кадр - посылаем событие 31 раз в секунду? Не накладно по производительности?
__________________
Тут мужик танцует и поёт про флэш |
Часовой пояс GMT +4, время: 05:26. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|