У меня была проблема, которая много раз беспокоила меня в ходе разработки Flash-проекта. Выглядит это примерно так:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at fl.containers::BaseScrollPane/fl.containers:BaseScrollPane::drawBackground()
at fl.controls::TileList/fl.controls:TileList::draw()
at fl.core::UIComponent/::callLaterDispatcher()
TypeError: Error #2007: Parameter child must be non-null.
at flash.display::DisplayObjectContainer/addChildAt()
at fl.controls::BaseButton/fl.controls:BaseButton::drawBackground()
at fl.controls::BaseButton/fl.controls:BaseButton::draw()
at fl.core::UIComponent/drawNow()
at fl.controls::ScrollBar/fl.controls:ScrollBar::draw()
at fl.core::UIComponent/::callLaterDispatcher()
В моем случае эта ошибка возникает из-за инициализации компонентов в коде, когда они не были явно добавлены в библиотеку компонентов fla в CS4. Раньше я сталкивался с этой проблемой при попытке динамически создать ScrollPanes в коде. Я решил это, добавив компоненты ScrollPane в свою библиотеку Main.fla. Какое-то время это работало.
Теперь я пытаюсь использовать окно автозаполнения AstraFlash. Я импортировал соответствующие файлы fla в CS4 и поместил поле автозаполнения в свой Swf. Все работает нормально, но указанная выше ошибка возникает при загрузке Swf. Я думаю, что поле AutoComplete пытается создать ScrollPane как часть своей функциональности. Хорошо, я понимаю это, поэтому я добавляю в библиотеку компонент ScrollPane с теми же результатами.
Обычно я просто возился с компонентами / настройками библиотеки, пока не избавлюсь от ошибки, но мне надоело с этим сталкиваться, и я хочу знать правильный способ решения проблемы. Итак, вот несколько вопросов, которые у меня есть:
Когда вам нужно добавить компонент в библиотеку Fla, а не просто создавать компонент в коде?
В какой Flas нужно добавить компонент? Только тот, кто им пользуется? Или все родители этого Фла?
Допустим, для компонента Autocomplete требуется компонент ScrollPane. Почему эта зависимость не распознается, когда я добавляю один компонент? Почему я должен добавить это явно?
В чем разница между добавлением компонента в библиотеку и его добавлением в папку «Component Assets» библиотеки? Для чего предназначена эта папка?
Мне действительно нужен этот компонент автозаполнения для работы. Предполагая, что код AS3 правильный, и я все еще получаю указанную выше ошибку, какие настройки вы думаете, вероятно, неправильные? Из-за разочарования я попытался добавить все возможные компоненты в библиотеку, а также в папку ресурсов компонентов библиотеки, чтобы иметь отправную точку, но я все равно получаю сообщение об ошибке.
Любая помощь приветствуется.