Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Меню как в Angry Birds (http://www.flasher.ru/forum/showthread.php?t=214663)

art_maestro 02.11.2017 00:19

Меню как в Angry Birds
 
Здравствуйте.
Делаю пакет мини-приложений. Хочу реализовать интерфейс игры как например в Angry Birds.

Титулка -> Список мини игр -> выбор мини игры (запуск игры)

Постараюсь более понятней объяснить.

Как реализовать, чтобы игра запускалась в том же окне. Например, вход в настройки, вход в список мини-игр, запуск мини игры из списка, выход в главное меню и т.пр.

Я пытался реализовать подобное с помощью кадров, все получалось до момента запуска игры.
Т.е. На 1 кадре- титулка, 2-м кадре перечень уровней, 3-й кадр игра. И вот когда переходит к 3-му кадру, то кнопки игры не работают.


Проще говоря, меня интересует сама концепция переключения между окнами (если можно так сказать) в приложении.

Буду благодарен за пример, чтобы посмотреть как такое реализовывается.

ZergMaster 02.11.2017 10:34

art_maestro
концепция такая:
оставляем только один кадр - первый. Содержимое кадров убираем в мувиклипы-объекты. Таким образом имеем три MovieClip:
1 объект - титулка, второй - перечень уровней, 3-й - игра.
Далее добавляем на сцену все три объекта. И по запросу управляем просто их visible.

Описанный вариант - тоже далеко не идеальный, но гораздо лучше, чем кадры. Потому что все будет работать.

art_maestro 02.11.2017 12:55

Спасибо за отзыв. Я тоже за это думал, за подмену мувиков, но может существует еще какой-то способ. Использовать visible можно, но мне кажется это не совсем удобно, т.к. уровней будет несколько десятков.

ZergMaster 02.11.2017 13:59

вполне удобно. Лучше, конечно, делать следующим образом.
имеем отдельный класс EventDispatcher (назовем его Model), где хранится состояние сцены (id мувика, который должен быть показан в данный момент). Это состояние меняется сеттером, при котором этот класс диспатчит событие СОСТОЯНИЕ_СЦЕНЫ_ИЗМЕНЕНО.
Все остальные, кому это интересно, подписываются на это событие и делают соответствующие изменения. В данном случае, это главная сцена, то есть Main класс, который создает сначала экземпляр Model, потом подписывается на событие CHANGE_SCENE_STATE, при срабатывании которого обращается к Model, берет оттуда актуальный идентификатор состояния и отображает в соответсвии с ним нужный мувиклип.
Важно понимать, что я не имею в виду "взять все, что есть в кадрах, конвертировать в мувик и кинуть все эти три мувика на сцену первого кадра прямо в программе флеш". Нужно создать отдельную папочку views и создать в ней три (в данном случае) класса - TitleView, LevelsView и GameVeiw, которые либо будут наследовать от MovieClip и создавать в себе мувики из библиотеки, либо будут напрямую наследоваться от них.

art_maestro 02.11.2017 14:36

Я примерно понял. Получается Model- будет являться неким контроллером, через который будет проходить вся работа.

В общем надо пробовать и продумать связку всей этой цепи классов. С ООП имел дело, но не являюсь профессионалом. Спасибо за предложенный вариант. Буду пытаться делать.

ZergMaster 02.11.2017 17:28

нет, контроллер - это тот, кто контролирует модель и изменяет))) А модель - это просто набор данных. Она ничем не занимается, кроме хранения данных и крика о том, что её кто-то изменил. View же, с вою очередь, отображает все это.

Tails 02.11.2017 19:21

Цитата:

Сообщение от ZergMaster (Сообщение 1202712)
нет, контроллер - это тот, кто контролирует модель и изменяет))) А модель - это просто набор данных. Она ничем не занимается, кроме хранения данных и крика о том, что её кто-то изменил. View же, с вою очередь, отображает все это.

Не учите плохому, это называется ТТУК.
В мвц модель содержит данные И всю логику их обработки. Контроллер нужен только для того чтобы обработать запрос от пользователя.

ZergMaster 02.11.2017 21:48

Цитата:

Сообщение от Tails (Сообщение 1202713)
В мвц модель содержит данные И всю логику их обработки.

Да, спасибо за уточнение. Конечно, вы правы.

art_maestro 02.11.2017 23:26

Я не имел ввиду модель MVC. Через MODEL будут осуществляться все действия и через него будут связаны остальные классы.


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

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