actionscript-3 – 将组件添加到Swf库的正确方法是什么?
在开发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,并将一个AutoComplete框放入我的Swf中.一切都很好,但加载Swf时会出现上述错误.我的想法是AutoComplete框试图创建ScrollPane作为其功能的一部分.好的,我理解这一点,所以我将ScrollPane组件添加到库中,结果相同. 通常我会搞乱库组件/设置,直到我摆脱错误,但我厌倦了碰到这个,我想知道解决问题的正确方法.所以,我有几个问题: >您何时需要将组件添加到Fla的库而不是仅仅在代码中创建组件? 我真的需要这个AutoComplete组件才能工作.假设AS3代码是正确的,并且我仍然遇到上述错误,您认为哪些设置可能不正确?出于沮丧,我尝试将每个可能的组件添加到库,以及库的组件资源文件夹只是为了有一个起点,但我仍然得到错误. 任何帮助表示赞赏. 解决方法
我不确定我是否理解你的设置.我假设你有一个包含一些组件的子fla,你需要在父(loader)fla中创建这些组件的实例.
如果你将子fla中的类编译成父fla,它应该可以工作,但这会复制一些东西. 问题是当你加载swf时,这些类位于不同的ApplicationDomain中. 我创建了一个简单的fla,它包含一个Button组件(fl.controls.Button),并从一个loader fla中加载它.我没有将Button组件添加到loader fla,但是使用加载的swf的应用程序域创建了一个按钮实例.这是如何做: var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loaded); loader.load(new URLRequest('componentContainer.swf')); function loaded(event:Event):void { addChild(loader.content); var SWFButton:Class = loader.contentLoaderInfo.applicationDomain.getDefinition('fl.controls.Button') as Class; var button = new SWFButton(); button.label = 'Test'; addChild(button); } 在Programming Actionscript 3.0中有一个关于这个问题和如何使用ApplicationDomain的页面,但是我并没有完全理解它. HTH,乔治 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |