Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Взаимодействие основных классов MVC (http://www.flasher.ru/forum/showthread.php?t=204548)

LIGHTHILL 02.11.2013 16:24

Взаимодействие основных классов MVC
 
Я для тренировки пытаюсь написать управляемую ракету с возможностью поворота, и включения выключения двигателя. в классе модели у меня будет обрабатываться текущие характеристики ракеты, то есть её скорость, ускорение, направление носа ракеты. А в классе отрисовки на каждом кадре нужно пот класса модели получать только текущие показатели x, y, и угол поворота картинки ракеты. Вот вопрос в том, как эти параметры лучше передавать в класс отрисовки? Через публичные переменные класса модели? Но это по-моему как-то не правильно, т.к. тогда теоретически есть возможность изменять эти переменные из любого класса помимо класса модели.
И ещё вопрос собственно по самой MVC. Такая система достаточно логичная и правильная?
1. Класс отрисовки (View) занимается что по каждому ENTER_FRAME отрисовывает текущее положение ракеты, и в принципе больше никак и ни с чем не взаимодействует.
2. Класс управления (Сontrol) будет при нажатии нужных клавиш передавать информацию об этом в класс модели.
3. Класс модели (Model) будет будет в себе иметь так сказать виртуальный космос со своими законами движения и ракету. При сигналах от класса управления о зажатии какой-то клавиши поворачивать ракету или включать/выключать двигатель. При этом, хотя отрисовка вся будет через ENTER_FRAME, в модели я хочу сделать всё через реальное время, и при изменении FPS в принципе ничего меняться тогда не должно.

Akopalipsis 02.11.2013 16:27

Вы вот эти темы читали раз два ? Там есть ответы почти на все вопросы. Но читать придётся страниц 150.

Добавлено через 16 минут
Цитата:

в модели я хочу сделать всё через реальное время, и при изменении FPS
Вы так умеете? Как так сделать?

ChuwY 02.11.2013 16:52

Мне больше нравится вариант, когда в каком-то контроллере более высокого уровня (не важно, как мы его назовем, на самом деле: контроллер, управляющий класс, геймплейменеджер) тикает счетчик (таймер, энтерфрейм, события с сервера -- не важно), по которому обновляется физический мир.
Это может быть, как и одна моделька вашей ракеты, так и модель всего физического мира (мне так больше нравится), где будет список всех взаимодействующих тел. Вызывается обновление физ мира, внутри обновляются все тела и производятся еще какие-нибудь дополнительные вычисления.
А с отображением уже есть варианты.
Если объектов немного, то можно при изменении моделек испускать событие, которое будет ловится въюхой этой конкретной модели. И вьюха будет апдейтить себя.
Если же объектов много или просто не нравится вариант с событиями в данном случае, то после апдейта физ мира из контроллера игры вызывается апдейт игровой вьюхи, в которой и содержатся отображения моделей физ мира. И там, так же, как и в модели мира, проходим по списку отображений и апдейтим их.
А модель должна предоставлять все необходимые методы доступа (пусть даже только для чтения).


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

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