我期待子类RemoteObject。而不是:
<mx:RemoteObject ... >
<mx:method ... />
<mx:method ... />
</mx:RemoteObject>
我想做类似的事情:
<remoting:CustomRemoteObject ...>
<mx:method ... />
<mx:method ... />
</remoting:CustomRemoteObject>
其中CustomRemoteObject
如此扩展mx.rpc.remoting.mxml.RemoteObject
:
package remoting
{
import mx.rpc.remoting.mxml.RemoteObject;
public class CustomRemoteObject extends RemoteObject
{
public function CustomRemoteObject(destination:String=null)
{
super(destination);
}
}
}
但是,在执行此操作并在MXML中声明CustomRemoteObject
时,flex编译器会显示错误:
无法解析&lt; mx:method&gt;到组件实现
起初我认为它与CustomRemoteObject
未能做某事有关,尽管(或之后)它除了名称之外没有任何变化。因此,我将源代码从mx.rpc.remoting.mxml.RemoteObject
复制到CustomRemoteObject
并对其进行了修改,因此仅区别是对类和包名称的重构。但仍然是同样的错误。
与许多MXML组件不同,我无法cmd +点击FlashBuilder中的<mx:method>
来打开源代码。同样,我在mx.rpc.remoting.mxml.RemoteObject
,mx.rpc.remoting.RemoteObject
或mx.rpc.remoting.AbstractService
中找不到引用,但在线查找源代码时未能成功。
这让我想到了标题中的问题:
<mx:method>
? (是的,我知道它是RemoteObject
方法的声明,我知道如何使用它,但它在其他组件方面很独特)RemoteObject
尝试失败,尽管它实际上是重命名?也许是根,为什么mx.rpc.remoting.mxml.RemoteObject
作为MXML声明可以接受<mx:method>
子标签,但是这个类的来源只能在名义上重构?
答案 0 :(得分:0)
您正在查看的语法('mx:method')是一种在MXML中而不是在ACtionScript中定义属性的方法。如果这是扩展“标准”UIComponent,你可以这样做:
<remoting:CustomRemoteObject ...>
<remoting:method ... />
<remoting:method ... />
</remoting:CustomRemoteObject>
但是,由于方法不是RemoteObject的属性,因此幕后可能存在一些编译魔术。我敢打赌它将“方法”标签变成了操作数组。
您可能需要手动执行此操作,如下所示:
<remoting:CustomRemoteObject ...>
<remoting:Operations>
<remoting:method ... />
<remoting:method ... />
</remoting:Operations>
</remoting:CustomRemoteObject>
但是,您可能必须解析代码和/或在调试模式下运行和/或查看生成的动作脚本以确切了解发生了什么以及如何将“方法”转换为操作数组。
我认为SDK中提供了远程类的来源;但也许只是开源SDK而不是Adobe支持的SDK。您可以在opensource.adobe.com下载开源SDK
这篇文章的一半是猜测。