![]() |
|
||||||||||
|
|||||
|
Регистрация: Jul 2009
Сообщений: 19
|
Здравствуйте уважаемые флэш разработчики.
Ради опыта взялся программировать не сложную игру подобного полана: http://content.stungames.com/games/o...ransporter.swf (тюнинг машины). Т.е. в наличии интерфейс с кнопками, нажимая на них мы меняем деталь машины (тюнингуем). Хотел бы обсудить с опытными людьми, как лучше организовать архитектуру игры. Итак. Машина делиться на корпус ( 5 видов покрасок), колеса (с 5-ю видами дисков), сполеры ( 5 видов), и др. Организация клипов: к примеру, за корпус у меня отвечает один клип с названием “Corpus” с пятью кадрами (в каждом - один вид покраски). Очень удобно перебирая кадры менять покраску. Таким же образом у меня организованы остальные части машины. Далее у меня существует клип Car, который сформирован из клипов (экземпляров) частей машины, иными словами, там собрана машина на основе клипов (“Corpus” и пр.) и т.к., все поименовано, чтобы к ним можно было обращаться, напр.: Car.Corpus. gotoAndStop(3); - выбираем третьею покраску корпуса Далее имеется клип Interface, в котором находится графический интерфейс с кнопками – треугольниками, как в игре примере (нажимая на одну из кнопок, она перебирает к примеру, цвета корпуса). Итак, в кадре у меня расположен экземпляр клипа Interface и экземпляр клипа Car. В main классе (тот что цепляется в свойствах документа) у меня идет инициализация объектов, а также главный код игры, т.е. переключение между главными кадрами (загрузка- кадр, главное меню -2 кадр, выше описанный тюнинг машины -3 кадр, поездка на машине – 4 кадр, окно результатов – 5 кадр). Тут же прописываю код взаимодействия клипа Interface и Car. Но вот тут возникала проблема, если экземпляр клипа Interface расположен в третьем кадре, то в функции main() класса main, я не могу обратиться к свойству например Interface_1.x = 10, выдает: “Не удается вызвать свойство или метод со ссылкой на объект "null".” Если же я экземпляр клипа Interface располагаю в первом кадре, то ошибки нет, обращение к свойству X происходит успешно. Что мне надо сделать, чтобы я мог обратиться к Interface во всех кадрах? Да, и очень важно, экземпляр клипа Interface я не создаю в коде класса main (var Interface_1:Interface = new Interface), а в flash cs4 я перетаскиваю клип в рабочую область кадра 3 и именую в свойствах, как Interface_1. Т.е. хотел бы услышать мнение об общей организации архитектуры игры и соответственно, как решить вышеописанную проблему? Последний раз редактировалось Рен; 05.08.2009 в 23:33. |
|
|||||
|
strange mood
|
А зачем вам обращаться к этому мувику в первом кадре, если его там нет?
По организации - для такой небольшой игрушки ваш вариант приемлем, а в похожей задаче посложнее уже просто напрашивается использовать иерархию классов. Т.е. есть объект машина, который служит контейнером для всех частей, из которых машина состоит. Для каждой части своё семейство классов, либо наследующихся от какого-то базового, либо просто реализующих одинаковый интерфейс. Но повторюсь, если нужно просто менять графику - незачем так заморачиваться. А вот если есть например самолётик, на который можно навешивать разные корпуса, которые отличаются внешним видом, разное оружие, которое по-разному стреляет, разные движки со своими характеристиками, то тогда такой подход очень даже пригодится.
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
Регистрация: Jul 2009
Сообщений: 19
|
А зачем вам обращаться к этому мувику в первом кадре, если его там нет? - просто для теста. Спасибо, разобрался.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 13:11. |
|
|
« Предыдущая тема | Следующая тема » |
|
|