|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
getDefinitionByName-переменная не определена
Раньше использовал эту возможность, но почему-то проблем не возникало, а сегодня - нате!
Основной класс: package{ import flash.display.Sprite; import flash.events.Event; import flash.utils.getDefinitionByName; public class Main extends Sprite{ private var cl:Class; public function Main():void{ addEventListener(Event.ADDED_TO_STAGE, onStage, false, 0, true); } private function onStage(e:Event):void{ trace("onStage"); trace(cl); cl=getDefinitionByName("Test") as Class; } } } package{ public class Test{ public function Test():void{ trace("test"); } public function foo():void{ trace("foo"); } } } Что эта ошибка означает - знаю, а вот почему она выскакивает - не могу понять. Может кто-то объяснить почему так происходит и что с этим делать? Заранее спасибо.
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
Lorem ipsum
|
или я резко ошибаюсь, или "лежащий в той же папке" класс и не должен быть доступен. он должен быть вкомпилен в основной swf или в один из подгруженных — не?
__________________
Поймай яблоко 2! |
|
|||||
Lorem ipsum
|
как я понял, умный компилятор не станет вставлять классы, которые не использованы ни разу, даже если они импортированы.
поэтому я помимо: прописываю: и все работает.
__________________
Поймай яблоко 2! |
|
|||||
Ну хорошо, а допусти у меня миллион (утрирую) таких классов. Не прописывать же все подряд. Думаю должен быть более элегантный выход из ситуации.
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
Регистрация: Mar 2008
Сообщений: 259
|
getDefinitionByName("Test") - это элегантный выход?? Да он в стопицот раз медленнее вышеупомянутого
|
|
|||||
Lorem ipsum
|
прописывать. все подряд.
а зачем ты используешь getDefinitionByName()?
__________________
Поймай яблоко 2! |
|
|||||
Т.е. для того чтоб использовать только нужный мне класс (возможно один) я должен прописывать все (весь миллион), даже не смотря на то, что они, возможно, мне и не понадобятся?
Ситуация такова: Есть ряд предустановленных событий, при наступлении которых запускаются определенные методы текущего класса. А вот то, какой именно класс при этом будет работать и определяется с помощью getDefinition. Если уж на то пошло, то почему бы не прописать все классы в векторе и дергать их оттуда - по сути будет тоже самое, что и прописывать весь миллион. Но это же не правильно. Или я не прав? Если да, то в чем?
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
|
|||||
Регистрация: Mar 2008
Сообщений: 259
|
Ну можно, положив миллион классов в пакет, заимпортировать пакет my.test.*. Ну и там если есть предустановленные события сделать общий интерфейс для них и т.п. Ну и типом для передачу в функции указывать базовый для всех них тип. Получается разница будет только в конструкторе.
|
|
|||||
Lorem ipsum
|
Цитата:
ты так и не поведал, зачем тебе такие ходы? чего нельзя явно создать экземпляр класса?
__________________
Поймай яблоко 2! |
Часовой пояс GMT +4, время: 11:23. |
|
« Предыдущая тема | Следующая тема » |
|
|