![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
s8000_1, если схематично — да. GUI и GAME на одном уровне, но они не общаются друг с другом. Черный квадрат должен быть разбит на две составляющих — модель и контроллер.
|
|
|||||
|
Человек и Здание
|
Цитата:
![]() Когда я вижу MVC, я невольно вспоминаю AFT... А если серьезно, то вот лично я отношусь к шаблонам проектирования скептически и категорически не согласен с их догматичным навязыванием, каким нередко занимаются их апологеты. Стандартизация - это здорово, но без фанатства. Любые универсальные решения плохи тем, что они практически всегда менее экономичны, чем решения ad hoc. Представляю себе банальный прелоадер на MVC... И вообще, примеров неудобства или даже идиотизма MVC можно привести массу. Особенно это касается именно флаша, с его гибридной системой построения приложения. Зачастую элементы проекта - клипы - являются и частью модели, и частью представления одновременно, а принудительное разнесение их на несколько объектов отдает уже автомазохизмом...
__________________
Регардсы. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Смольный, конечно, всё относительно масштабов проекта, но для игрушки таки лучше MVC.
|
|
|||||
|
Человек и Здание
|
___etc, ты знаешь, я когда делал игрушки, старался, конечно, использовать какие-то такие наработки, но обломался, поэтому и скепсис.
Например, во многих игрушках часто нужны довольно простенькие коллизии, которые легко порешать hitTest-ом. Исходя из идей MVC, приходится контроллером обработать событие (сдвиг объекта), дать команду на изменение модели (пересчитать координаты), она говорит вьюверу - отобрази, потом опять просыпается контроллер, проверяет коллизию, и может весь этот мегапроцесс инициировать снова. Потом, проблема синхронизации обновления вью и модели - за один такт (enterFrame, положим) изменяется много состояний в модели, притом независимо, и после каждого идет команда от модели на изменение вью, а нужно одно - после всех модицикаций, поэтому часть функционала модели (например, событие об изменении модели, которое надо отобразить вьюверу) фактически выполняет контроллер. Т.е. куча исключений, которые друг на друга так наслаиваются, что получается не следование шаблону, а только запутывание самого себя. Сроки же в нашу эпоху экстремального программирования таковы, что пришлось на все плюнуть слюною и делать как придется, лишь бы быстрее и работало. В результате остаются только простейшие вещи типа очередей и юзанья более-менее толковой цепочки классов, включая абстрактные... Я не призываю к плохому программированию, просто отмечаю, что жизнь часто не соответствует идеальным концепциям, сколь бы приятными они ни были. Все описанное я для себя называю "Алые Паруса и программирование" ![]()
__________________
Регардсы. Последний раз редактировалось Смольный (Smolniy); 07.11.2008 в 17:22. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Смольный, тут дело в конкретных примерах, где MVC действительно не стоит использовать. Но в целом, я думаю, лучше всё-таки подходить сначала с ним
![]() |
|
|||||
|
Человек и Здание
|
Ок, сочтем за консенсус
![]()
__________________
Регардсы. |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 14
|
Спасибо за мнения, друзья!
А вот подскажите еще почему происходит такое чудо: 1. делаю клип 2. в 5м кадре - ключ, текстовое поле tf, типа инпут, бордюр, начальное значение dsfg. Там же - квадрат, конверт в клип, имя bb 3. в 10м кадре - f5 4. Клип линкейджу, класс test. package {
import flash.display.MovieClip;
import flash.text.TextField;
import flash.events.*;
public class test extends MovieClip {
public function test() {
addEventListener(Event.ENTER_FRAME, Update);
}
public function Update(eprst:Event) {
trace (bb)
trace (tf)
trace (tf.text)
tf.text += "q";
}
}
}
Сначала печатает null null TypeError: Error #1009: Cannot access a property or method of a null object reference. несколько раз, все логично Потом [object MovieClip] [object TextField] dsfg [object MovieClip] [object TextField] dsfgq и так далее, притом даже когда клип перехлестнулся в начало и поля (клипа bb) как бы не было. Наблюдение раз - когда визуалки поля не стало, объект класса все равно существует и свойства его доступны. Кашмар! Это не просто "не по-as2шному", это просто не по-человечески... Исходя из логики - если есть возможность создать объект без new руками, почему он не умирает из тех же соображений? Наблюдение два - и где же movieClip нединамический класс? Продолжаю тест, в 10м - f7, в 15м - f5 Сначала объекта нет, потом есть, потом нет, т.е. пустой ключ все-таки убивает объекты слоя... При авто-переходе же в начало клипа - не убивает. |
|
|||||
|
Человек и Здание
|
GAIKER
Ну вот например: http://fla-master.livejournal.com/3972.html#cutid1 Только оно ма-а-ахонькое... Ловит нажатие на клаву и выдает кейкод, и ффсе ![]()
__________________
Регардсы. |
|
|||||
|
>>когда визуалки поля не стало, объект класса все равно существует и свойства его доступны
все нормально: удаление из дисплейЛиста не предполагает удаление самого объекта, почему пустой ключ убивает объект не знаю, да вобщем не очень-то и хочу знать: стоить логику для объектов на таймлайне - занятие не для слабонервных.. имхо таймлайн только для анимаций, возможно для каких-то сообщений о состоянии этих анимаций.., смысла погружаться в такие чудеса, что ты показал, не вижу никакого |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:06. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|