我目前正在创建一个在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

07-28 13:38