![]() |
обеспечить переход по уровням игры
привет, подскажите, как можно обеспечить наилучшим образом смену уровней в игре. пробую написать простенькую игру на базе MVC и никак не могу всунуть туда переход по уровням. кто должен за это отвечать?
|
Контроллер.
|
ок. контроллер. пускай есть 15 уровней. каждый уровень - это вьюшка отдельная, которая грузится по листнеру в контроллере? или это одна вьюшка, в которую подгружается data или VO? или надо делать 15 мувиклипов и в зависимости от номера уровня грузить тот или иной? мне нравится вариант, когда у меня одна вьюшка - GameLevelsView, в которую подгружается data с инфой об уровне и в зависимости от нее создаются новые и удаляются старые мувики. Как все таки лучше? может есть удачные примеры левел провайдеров?
|
1е решение или 2е. по желанию. все норм будет
|
Вьюшка одна.
|
мне вполне нравится вариант с одной вьюшкой. перейду к коду. предположим мы нажали кнопку Play, удалилось менюшка и задиспатчился кастомный ивент о начале нового уровня, который я слушаю в контроллере:
Код AS3:
Код AS3:
И вот, что мне не нравится, так это то, что во вьюшке мне приходится делать так: Код AS3:
|
Абстрактный класс AGameLevel, интерфейс IGameLevel, классы-наследники GameLevel001 ... GameLevel100.
Эти классы (классы, не экземпляры) складываем в массив _gameLevels. При повышении уровня создаем новый уровень - Код AS3:
|
Практика показывает, что хорошо бы сразу предусмотреть метод remove для класса-левела. И при создании нового уровня честно чистить старый (удалять листенеры, останавливать звуки и т.д.) перед удалением.
Что-то типа: Код AS3:
Впрочем, возможно, это только у меня такая необходимость. :) |
Wolsh, где хранится массив _gameLevels?
mikhailk, согласен. |
_gameLevels - это переменная класса основного контейнера, в котором будут открываться уровни.
С другой стороны, очень от игры зависит. Если каждый левел весит по 2-3 метра, их никто заранее не закачивает, в этом случае и массив объектов GameLevel, возможно, смысла большого не имеет. |
Wolsh, я понимаю, что возможно просьба из разряда "ну вы, батенька, вообще прифигели", но очень хочется пример небольшой, пожалуйста. потому что интересно попробовать именно так как вы написали, но я не уловил до конца как это все взаимодействует.
Добавлено через 5 минут mikhailk, какой еще есть вариант? я думал хранить ссылки на классы GameLevel001 ... GameLevel100 в массиве в модели, но это противоречит mvc: вью не должно лазить в модель, а модель во вью. все взаимодейсвия через контроллер. хотя это конечно идеализация. но у меня маловато опыта. так что я готов дальше, с благодарностью, слушать тех, у кого его больше и учиться. |
Не знаю, тут у каждого какие-то собственные решения. Сейчас модно делать фоновую подгрузку контента и подгрузку контента по мере необходимости. Т.е., после старта приложения в клиент закачивается только самое необходимое. Соответственно, массив мувиклипов-уровней просто не из чего строить. Разве что из классов-пустышек, каждый из которых будет грузить свой контент.
Но если игра первая и небольшая, то проще действительно все в начале загрузить и потом с этим жить. |
| Часовой пояс GMT +4, время: 09:44. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.