2009-11-04 32 views
10

Actionscript, BlazeDS'de kullanılan bir [RemoteClass] meta veri etiketini destekler ve Java'dan BlazeDS'e AMF ikili nesnelerini sıralamak için veri bağlama ipuçları sağlar.[RemoteClass] Flex Actionscript'te nasıl çalışır? Özel veri bağlama için kullanabilir miyim?

Örneğin

:

Java: paketi örnek;

public class UserInfo 
{ 
    private String userName; 

    public String getUserName() 
    { 
     return userName; 
    } 

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

Actionscript: [RemoteClass] BlazeDS çerçevesinde uygulanmaktadır ve özel bir veri bağlama uzak çerçeve davranışı geçersiz kılmak ve sağlayabilir tam olarak nasıl

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

(örn JSON mesajı Actionscript [Bindable], [RemoteClass] sınıfına bağlayabileceğiniz sistem)?

cevap

19

[RemoteClass (diğer adı = "com.example.MyClass")] flash.net.registerClassAlias() çağrı için bir Flex kısaltmadır) aşağıdakileri arayabilirsiniz:

getClassByAlias (aliasName: String): Sınıf Daha önce registerClassAlias ​​() yöntemine yapılan bir çağrıda kayıtlı bir takma adı bulunan bir sınıfı arar.

AS'dan Java'ya giden giden kodlama için, aliased sınıf adını almanız gerekir, bunu flash.utils.describeType() numaralı telefonu arayarak yapabilir ve Actionscript nesnesinin nesnesinin özniteliklerini, özelliklerini ve yöntemlerini sorgulamak için "yansıma" özelliğini kullanabilirsiniz.

Örneğin ObjectCodec.as için aşağıdaki kod parçacığı kullanarak takma özelliğini alamadığında görünüyor "@": Oluşturulan hangi kod görmek için -keep-generated-actionscript derleyici argümanı kullanabilirsiniz

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

Adobe'nin sitesinde artık "registerClassAlias" yöntemi hakkında bilgi yok; eksik belgeleri dağıtmak için [Adobe forumlarında bir yayın] var (http://forums.adobe.com/thread/1012207?start=0&tstart=0). – supervacuo

+0

@supervacuo: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/package.html#registerClassAlias%28%29 –

2

[RemoteClass] yalnızca Flex tarafında kullanılır. Tek yaptığı, yerel bir nesne ile uzak sınıf adı arasında bir eşleme kurmak için flash.net.registerClassAlias() işlevini çağırmaktır.

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

(zamanında bu kayıtlı takma sınıfları erişmek için özel bir JSON veri seri çerçeve yazmak için:

+0

flash.net.registerClassAlias ​​() listesine erişmenin bir yolu var. Ben JSON mesajlarını kullanarak kendi özel remoting yazmaya çalışıyorum, bu yüzden Flex's Producer/Consumer veya IDataInput, IDataOutput arayüzleri kullanmıyorum. Uzak java sınıf adından bir Flex sınıfını arayabilmem ve onu yapılandırabilmem gerekir. – Dougnukem

2

ve tam nasıl çalıştığını.