[AS3]registerClassAlias的用法

來源:互聯網
上載者:User
registerClassAlias在利用AMF3進行序列話網路通訊中,是非常有用的。需要把用戶端的對象直接傳送到伺服器得時候,保留該對象的類(類型)。 這樣的話,就可以傳送自訂對象或者系統內建對象。
具體的使用方法,官方有詳細地用法。這裡我只說說自己的一些理解。
readObject方法對構造器有參數的類,是會出錯的,會彈出參數數量不匹配這個錯誤。因為還原對象進行反射的時候,是預設沒有參數的給構造器的。這也是有些人 討論Sprite等對象不能進行深度拷貝的原因
所以在使用AMF3進行序列話的時候要注意這個了,還有一個就是,如果那個類包含了多個類,也就是個複合類,那麼裡面的那個複合類,也必須進行registerClassAlias,例如
  1. package
  2. {
  3.     import flash.geom.Point;
  4.     
  5.     public class Test
  6.     {
  7.         public var name:String;
  8.         public var point:Point;
  9.     }
  10. }
  11. 這樣需要寫兩條語句才能完全把Test序列化
  12. registerClassAlias("point",Point);
  13. registerClassAlias("test",Test)

具體使用例子,參考官方例子,下面是摘錄出來的

此樣本使用 registerClassAlias() 函數為 ExampleClass 註冊一個別名 
( com.example.eg )。 由於為類註冊了別名,因此可以將對象作為 ExampleClass 的執行個體還原序列化,且代碼將輸出
 true。 如果刪除 registerClassAlias() 調用,則代碼將輸出 false

  1. package {
  2.     import flash.display.Sprite;
  3.     import flash.net.registerClassAlias;
  4.     import flash.utils.ByteArray;
  5.     public class RegisterClassAliasExample extends Sprite {
  6.         public function RegisterClassAliasExample() {
  7.             registerClassAlias("com.example.eg", ExampleClass);
  8.             var eg1:ExampleClass = new ExampleClass();
  9.             var ba:ByteArray = new ByteArray();
  10.             ba.writeObject(eg1);
  11.             ba.position = 0;
  12.             var eg2:* = ba.readObject();
  13.             trace(eg2 is ExampleClass); // true
  14.         }
  15.     }
  16. }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.