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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.04.2009, 12:53
Cybo вне форума Посмотреть профиль Отправить личное сообщение для Cybo Найти все сообщения от Cybo
  № 1  
Ответить с цитированием
Cybo

Регистрация: 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()) и все подобные, или просто иметь прямую ссылку на графический символ для осуществления манипуляций над ним.

Описание конечно получилось сумбурным... Для тех, кто понятно и имеет опыт, поделитесь, какой метод удобнее, или может моё представление неверно?

Старый 22.04.2009, 12:56
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Разделяйте данные и вьюверы.

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

Регистрация: Nov 2001
Адрес: Казань
Сообщений: 118
Хех... И то верно - перемудрил.
Тогда у меня такой вопрос:
Хорошо, допустим, у нас есть игровой объект, который имеет несколько состояний. Причём эти состояния могу изменяться с какими-нибудь эффектами. Т.е. получается, что надо сделать Модель объекта, "рендер" сцены, который будет отображать изменения множества объектов. А вот как сделать смену состояний одного объекта (с эффектами), ведь каждый игровой объект уникален и обладает своей механикой? Если я правильно понимаю, то надо сделать мини-рендер, который будет привязан только к определённому типу игровых объектов для смены состояний?

Старый 22.04.2009, 20:14
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 4  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
1. Не вижу принципиальной разницы, между двумя этими способами. Что мешает отправлять события в первом случае?
2. Если речь идет о флеше, тогда что мешает сделать linkage на свой класс который наследуется от Sprite или MovieClip? И уже в нем прописать все поведение объекта. И просто добавлять этот объект посредством addChild и удалять с помощью removeChild


Последний раз редактировалось alatar; 22.04.2009 в 20:16.
Старый 22.04.2009, 20:23
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Cybo, модель изменяет состояние = изменяет состояние вьювер.

Старый 23.04.2009, 10:20
Smrad вне форума Посмотреть профиль Отправить личное сообщение для Smrad Найти все сообщения от Smrad
  № 6  
Ответить с цитированием
Smrad

Регистрация: Nov 2008
Сообщений: 205
Отправить сообщение для Smrad с помощью ICQ
Цитата:
Сообщение от Cybo Посмотреть сообщение
Хех... И то верно - перемудрил.
Тогда у меня такой вопрос:
Хорошо, допустим, у нас есть игровой объект, который имеет несколько состояний. Причём эти состояния могу изменяться с какими-нибудь эффектами. Т.е. получается, что надо сделать Модель объекта, "рендер" сцены, который будет отображать изменения множества объектов. А вот как сделать смену состояний одного объекта (с эффектами), ведь каждый игровой объект уникален и обладает своей механикой? Если я правильно понимаю, то надо сделать мини-рендер, который будет привязан только к определённому типу игровых объектов для смены состояний?
Хороший вариант - паттерн State.

Старый 23.04.2009, 12:21
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 7  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Ну-ка ну-ка, весьма интересно.
Можно простенький пример вьювера и модели? Как я понимаю создается модель, которая делает просчеты и в нужные моменты изменяет свойства вьювера, так?

Старый 23.04.2009, 12:25
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Модель ничего не делает с вьювером. Это сам вьювер слушает события модели и при необходимости делает какие-то телодвижения.

Писать пример влом, это обыкновенный MVC

Старый 23.04.2009, 21:48
Cybo вне форума Посмотреть профиль Отправить личное сообщение для Cybo Найти все сообщения от Cybo
  № 9  
Ответить с цитированием
Cybo

Регистрация: Nov 2001
Адрес: Казань
Сообщений: 118
Вообщем, Модель хранит только состояния объекта - это чёрный ящик с набором методов и "генератором" событий. Контроллер - в зависимости от входящих сигналов (с помощью методов и обработки событий) управляет состояниями модели. Вид - "корчит рожи" в зависимости от состояния модели и команд контроллера. Как-то так.

Старый 23.04.2009, 23:47
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 10  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
То есть вьювер получает ссылку/создает в себе модель, подписывается на его события и изменяет состояние?
Хм. а если надо изменять позицию каждый кадр - посылаем событие 31 раз в секунду? Не накладно по производительности?

Создать новую тему Ответ Часовой пояс GMT +4, время: 05:26.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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