![]() |
|
Модераторы: SoWa |
![]()
|
|
| DooZ |
|
||||||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 25.11.2005 Репутация: нет Всего: 1 |
вопрос по enter_frame и xml
Здравствуйте, я еще только учусь поэтому есть такого плана вопрос есть главный класс Main который прикреплен к сцене, он собственно только обрабатывает другие классы (вызывает) вот краткий пример:
собственно тут создается герой и добавляется на сцену далее в методе EnterFrame происходит обновление сцены (в данном случае герой просто крутится)
и вот подошли мы к классу Hero
далее
и далее сам метод движения:
собственно без XML все отлично т.е. если переменную например heroXML.rotationSpeed заменить числом, то все работает оно и понятно, не нужно ждать загрузки XML но в моем случае код начинает отрабатывать раньше, чем загрузился XML отсюда и ошибка это я понимаю, но не понимаю как это исправить, а точнее как переписать, что бы все работало правильно и как надо если что-то не понятно описал, сообщите, дополню спасибо ..... может как вариант грузить ВСЕ XML файлы, которые будут юзаться в программе сразу в Main классе и потом раздавать их в качестве параметров в новые классы? типа new Hero(heroXML); new Buller(bulletXML); и т.д.? на сколько это верно и правильно с точки зрения профессионального программирования и удобства? |
||||||||||
|
|||||||||||
| DooZ |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 25.11.2005 Репутация: нет Всего: 1 |
немного пример переделал что бы более кратко было и понятно
главный класс Main
и класс XMLLoader
вот собственно и вопрос как получить загруженные данные xml в классе Main и соответственно продолжить работу уже с загруженными данными.. вот как-то так помогите, запутался |
||||
|
|||||
| bars80080 |
|
||||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: нет Всего: 315 |
то есть ошибка в том, что метод
private function EnterFrame(e:Event):void { hero.Move(); } вызывается раньше, чем будет загружен класс? ну, так запускай слушатель enterframe только когда загрузится класс. то есть перенеси addEventListener(Event.ENTER_FRAME, EnterFrame); в private function getXML(e:Event):void это самое простое есть более гибкий, но тяжеловатый вариант. сделай специальный массив, где каждый элемент - метод который нужно отыграть. к примеру:
далее изменяем обработчик:
теперь по загрузке мы можем добавлять события:
конечно, может быть придётся немного перестроить структуру, зато будет всего один обработчик Это сообщение отредактировал(а) bars80080 - 21.5.2010, 19:24 |
||||||
|
|||||||
| DooZ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 25.11.2005 Репутация: нет Всего: 1 |
второй способ реально немного сложный
насчет перенести слушатель события в тот класс не подойдет или подойдет... тут проблема в том что в EnterFrame методе, обрабатываются и другие методы, других классов таких как полет пули, враги на карте и т.д. в каждом классе вызывать свой слушатель ENTER_FRAME помоему не правильно? или я ошибаюсь? |
|||
|
||||
| DooZ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 25.11.2005 Репутация: нет Всего: 1 |
Опять же, насчет вызова enter_frame внутри метода getXML после загрузки
дело в том, что файлов XML с параметрами (с данными) несколько... т.к. для каждого класса свои и соответсвенно вызывать каждый раз enter_frame не вариант... |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: нет Всего: 315 |
||||
|
||||
| DooZ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 25.11.2005 Репутация: нет Всего: 1 |
ок будем пробывать
хотелось бы еще услышать мнения на этот счет от других участников может есть более изящные способы? просто второй вариант уж больно не красив в плане реализации... не верю я, что нет других способов |
|||
|
||||
| Ramirez |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 18.1.2005 Где: Moscow, ExUSSR Репутация: нет Всего: 5 |
как вариант, в конструктор XMLLoader передавать еще ссылку на переменную, в которую нужно сохранить результат. это если все равно гдето есть цикл в котором можно эту переменную проверять. затевать цикл только ради проверки наличия данных мне кажется накладно. или ссылку на функцию которую следует вызвать по завершении загрузки (из метода loadedXML) и передать ей xml. эдакий callback. в любом случае, мне кажется, не выйдет в одной функции инициализировать XMLLoader и получить результат (ну цикл вроде OnEnterFrame не рассматриватеся, поскольку это оверхед, на мой взгляд), т.к. процесс асинхронный. Это сообщение отредактировал(а) Ramirez - 28.5.2010, 18:55 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | ActionScript 3 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |