Проблема с getDefinitionByName
Здравствуйте , появилась непонятная проблема с getDefinitionByName
Код AS3:
а так : Код AS3:
а во втором варианте переменная levelData = undefined |
http://help.adobe.com/ru_RU/FlashPla...initionByName()
Почитайте описание. Если определение не найдено, выбрасывается исключение. Правильнее будет обрабатывать эту ситуацию: Код AS3:
Код AS3:
|
первый вариант же работает, там создается экземпляр этого класса , пакет я указал cls.data. , а когда я создаю экземпляр вне trace , у меня вылетает ошибка
|
В первом примере вы создаёте экземпляр не по ссылке levelData, а на прямую:
Код AS3:
|
Классы, которые берутся через getDefinitionByName должны быть вкомпилированы в проект. А если они нигде не упомянуты или нет специальной настройки компилятора, то они игнорируются. В первом случае класс упомянут
Код AS3:
Во втором случае нет. Решение у этой проблемы простое. Просто нужно где-то упомянуть класс. Я делаю это в отдельном классе, который просто импортирую в нужный мне проект. Но можно просто где-то написать Код AS3:
|
На сколько я знаю, еще можно подключить либу как include.
|
Да, все заработало, прописал в конструкторе. А если допустим у меня 20 уровней, соответственно Level1Data, Level2Data,Level3Data ... И все они наследуются от LevelData, можно ли как нибудь поизящней их прописать?
|
Marlin эти классы в swc или swf библиотеке?
|
Мне кажется гораздо порще и приятнее решить данную задачу через интерфейсы. Для уровня прописывается интерфейс ILevel в котором описываются все функции LevelData. Для Main класса тоже прописывается интерфейс IMain с одной функцией getLevel():ILevel. Таким образом подгрузив этот свф, и зная что его Main это IMain вы без всяких проблем забираете у него ILevel, пользуте и радуетесь. Если несколько уровней в одном свф, то нужно доработать IMain передавая количество уровней и в добавить например индекс getLevel(index:uint):ILevel.
|
Цитата:
|
Часовой пояс GMT +4, время: 14:41. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.