mx:方法,mx.rpc.remoting.mxml.RemoteObject和子类的子问题mx.rpc.remoting.mxml.RemoteObject的问题

时间:2010-05-06 18:31:30

标签: flex actionscript flex3

我期待子类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.RemoteObjectmx.rpc.remoting.RemoteObjectmx.rpc.remoting.AbstractService中找不到引用,但在线查找源代码时未能成功。

这让我想到了标题中的问题:

  • 完全<mx:method>? (是的,我知道它是RemoteObject方法的声明,我知道如何使用它,但它在其他组件方面很独特)
  • 为什么我的子类RemoteObject尝试失败,尽管它实际上是重命名?也许是根,为什么mx.rpc.remoting.mxml.RemoteObject作为MXML声明可以接受<mx:method>子标签,但是这个类的来源只能在名义上重构?
  • 1 个答案:

    答案 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

    这篇文章的一半是猜测。