簡體   English   中英

[RemoteClass]如何在Flex Actionscript中工作,我可以將它用於自定義數據綁定嗎?

[英]How does [RemoteClass] work in Flex Actionscript can I use it for custom data-binding?

Actionscript支持在BlazeDS中使用的[RemoteClass]元數據標記,以提供數據綁定提示,以便將AMF二進制對象從Java編組到BlazeDS。

例如:

Java:包樣本;

public class UserInfo
{
    private String userName;

    public String getUserName()
    {
        return userName;
    }

    public void setUserName(String value)
    {
        userName = value;
    }
}

動作:

[Bindable]
[RemoteClass(alias="sample.UserInfo")]
public class UserInfo
{
    public var userName:String=”";
}

在BlazeDS框架中如何實現[RemoteClass],你是否可以覆蓋該行為並提供可以綁定到Actionscript [Bindable],[RemoteClass]類的自定義數據綁定遠程處理框架(例如,JSON消息傳遞系統) ?

[RemoteClass(alias =“com.example.MyClass”)]是一個用於調用flash.net.registerClassAlias()的Flex簡寫:

public function registerClassAlias(aliasName:String, classObject:Class):void

要在運行時訪問這些已注冊的別名類(要編寫自定義JSON數據序列化框架),您可以調用:

getClassByAlias (aliasName:String):Class查找以前通過調用registerClassAlias()方法注冊了別名的類。

對於從AS到Java的傳出編碼,您需要檢索別名類名,您可以通過調用flash.utils.describeType()並在Actionscript對象的類上使用“reflection”來查詢對象的屬性,屬性和方法。

例如, ObjectCodec.as的以下代碼片段似乎使用“@”檢索別名屬性:

override protected function encodeComplex(o:Object, b:IBinary, context:IContext=null):void
{
        var desc:XML = describeType(o);
        var classAlias:String = desc.@alias;
        //...
}

[RemoteClass]僅用於Flex端。 它真正做的就是調用flash.net.registerClassAlias()函數來設置本地對象和遠程類名之間的映射。

您可以使用-keep-generated-actionscript編譯器參數來查看生成的代碼及其工作原理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM