我目前正在创建一个在Flex 3中扩展UIComponent的类,但是当Flash Builder尝试编译时,会向我显示一些错误
1044:名称空间mx.automation:IAutomationObject中的接口方法createAutomationIDPartWithRequiredProperties未由类组件实现:ArtWorkImage
1044:名称空间mx.automation:IAutomationObject中的接口方法get automationEnabled未由com.senocular.display:TransformTool类实现
我看到UIComponent实现了此接口,但我之前从未遇到过此错误,我假设UIComponent应该默认实现此实现,所以应该是其他情况,我已经尝试过重新创建项目或清理项目,但没有结果,有人可以指出我该怎么解决,谢谢您的帮助
哦,顺便说一句,我之前在flex builder中有这个项目,作为FXP导出并在Flash Builder中导入,谢谢!
最佳答案
所有UI对象都使用自动化委托来处理自动化接口的实现。每个UIComponent都有在Automation Framework中注册的特定自动化委托。当根据对象的类名创建对象时,这些自动化委托实现将由Automation框架注入到对象中。
例如:
UIComponent 工具提示DateChooser
通常,如果您将组件子类化,则应该继承自动化实现。但是,取决于如何创建对象的实例,自动化框架可能无法将类名称解析为适当的超类。在这种情况下,您可能需要采取其他步骤才能将自动化实施纳入您的课堂。
如果希望类自动注入特定的自动化实现,则应在mx.automation.Automation类上调用静态registerDelegateClass方法。
import mx.automation.*
Automation.registerDelegateClass(com.foo.bar.ArtWorkImage, mx.automation.delelegates.core.UIComponentAutomationImpl);
或者,您可以直接在UIComponent中实现IAutomationObject方法,也可以创建自己的委托类,然后通过传递自动化框架来实例化并将其“注入”到其构造函数中的类中。
这里有一些链接可以帮助您了解自动化框架:
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/automation/Automation.html
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/automation/delegates/core/UIComponentAutomationImpl.html
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/automation/package-detail.html