在开发 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()
现在,在我的例子中,这个错误源于在代码中初始化组件时没有明确地将它们添加到 CS4 中的 fla 组件库中。过去,我在尝试在代码中动态创建 ScrollPanes 时遇到了这个问题。我通过将 ScrollPane 组件添加到我的 Main.fla 的库中解决了这个问题。这似乎工作了一段时间。
现在,我正在尝试使用 AstraFlash AutoComplete 框。我已将正确的 fla 文件导入 CS4,并在我的 Swf 中放置了一个 AutoComplete 框。一切正常,但加载 Swf 时会出现上述错误。我的想法是 AutoComplete 框正试图创建一个 ScrollPane 作为其功能的一部分。好的,我明白这一点,所以我也将 ScrollPane 组件添加到库中,结果相同。
通常我只会弄乱库组件/设置,直到我摆脱错误,但我厌倦了遇到这个问题,我想知道解决问题的正确方法。所以,这里有几个问题:
什么时候需要将组件添加到 Fla 的库中,而不仅仅是在代码中创建组件?
您需要将组件添加到哪个 Flas?只是使用它的那个?还是该 Fla 的所有父母?
假设 Autocomplete 组件需要一个 ScrollPane 组件。当我添加一个组件时,为什么不能识别这种依赖关系?为什么我必须明确添加它?
将组件添加到库和将其添加到库的“组件资产”文件夹有什么区别?这个文件夹的目的是什么?
我真的需要这个 AutoComplete 组件才能工作。假设 AS3 代码是正确的,但我仍然收到上述错误,您认为哪些设置可能不正确?出于沮丧,我尝试将所有可能的组件添加到库以及库的组件资产文件夹中,只是为了有个起点,但我仍然收到错误消息。
任何帮助表示赞赏。