偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

學習筆記 解析Flex對象持久化問題

開發(fā) 后端
本文向大家介紹一下關于Flex對象持久化問題,關于Flex對象序列化和持久化的問題,很多人認為對象不能拷貝到服務器,其實淺度的拷貝是可以做到的。

在學習Flex的過程中,你可能會遇到Flex對象持久化方面的問題,這里和大家分享一下,很多人認為對象不能拷貝到服務器,其實淺度的拷貝是可以做到的。

關于Flex對象持久化

關于Flex對象序列化和持久化的問題,很多人認為對象不能拷貝到服務器,其實淺度的拷貝是可以做到的。

我們來看這樣一個例子:
 

  1. viewplaincopytoclipboardprint?  
  2. privatefunctiontest():void{  
  3. varcanvas:Canvas=newCanvas();  
  4. canvas.width=100;  
  5. canvas.height=100;  
  6. //保存到ByteArray  
  7. varb:ByteArray=newByteArray();  
  8. b.writeObject(canvas);  
  9.  
  10. //取出對象  
  11. b.position=0;  
  12. varo:Object=b.readObject();  
  13. varc:Canvas=objectToInstance(o,Canvas)asCanvas;  
  14. trace(c.width);  
  15. trace(c.height);  
  16. this.addChild(c);  
  17. }  
  18.  

 

◆該例子省略了保存到服務器,和從服務器中取出的過程,只是簡單保存了Flex對象,然后就立即拿出ByteArray中的對象。因為中間的ByteArray是不變的(也就是說到服務器端類型變?yōu)閎yte[],其中的內(nèi)容也不會改變),故中間過程可以忽略。

***的結(jié)果為100和100,說明拿出的Flex對象的寬和高都保持住了。

那么在中間的過程加入服務器操作,道理也應如此:

  1. viewplaincopytoclipboardprint?  
  2. privatefunctiontest():void{  
  3. varcanvas:Canvas=newCanvas();  
  4. canvas.width=100;  
  5. canvas.height=100;  
  6. //保存到ByteArray  
  7. varb:ByteArray=newByteArray();  
  8. b.writeObject(canvas);  
  9. //保存到服務器  
  10. remoteObject.Save(b);  
  11. }  

然后在服務器端: 

  1. viewplaincopytoclipboardprint?  
  2. publicvoidSave(ByteArrayba)  
  3. {  
  4. //可以保存到文件  
  5. FileStreamfs=newFileStream(Path,FileMode.Createm,FileAccess.Write);  
  6. fs.Write(ba.GetBuffer(),0,ba.GetBuffer().Length);  
  7. fs.Close();  
  8. //=====  
  9. //或者保存到數(shù)據(jù)庫  
  10. newFlexObjectDAO().Save(ba.GetBuffer);  
  11. }  
  12.  

  ◆這樣,我們可以隨時讀取這個Flex對象,并處理,服務器端的讀取程序我就不寫了,只寫Flex部分: 

  1. viewplaincopytoclipboardprint?  
  2. privatefunctiontest():void{  
  3. //取出對象  
  4. remoteObject.Load();  
  5. }  
  6.  
  7. privatefunctionremoteObjectResult(event:ResultEvent):void{  
  8. varb:ByteArray=eent.resultasByteArray;  
  9. b.position=0;  
  10. varo:Object=b.readObject();  
  11. varc:Canvas=objectToInstance(o,Canvas)asCanvas;  
  12. trace(c.width);  
  13. trace(c.height);  
  14. this.addChild(c);  
  15. }  
  16.  

同理,也可以取出100和100。

objectToInstance方法的內(nèi)容:

  1. viewplaincopytoclipboardprint?  
  2. publicstaticfunctionobjectToInstance(object:Object,clazz:Class):*  
  3. {  
  4. varbytes:ByteArray=newByteArray();  
  5. bytes.objectEncoding=ObjectEncoding.AMF0;  
  6. varobjBytes:ByteArray=newByteArray();  
  7. objBytes.objectEncoding=ObjectEncoding.AMF0;  
  8. objBytes.writeObject(object);  
  9. vartypeInfo:XML=describeType(clazz);  
  10. varfullyQualifiedName:String=typeInfo.@name.toString().replace(/::/,".");  
  11. registerClassAlias(fullyQualifiedName,clazz);  
  12. varlen:int=fullyQualifiedName.length;  
  13. bytes.writeByte(0x10);//0x10isAMF0for"typedobject(classinstance)"  
  14. bytes.writeUTF(fullyQualifiedName);  
  15. bytes.writeBytes(objBytes,1);  
  16. bytes.position=0;  
  17. varresult:*=bytes.readObject();  
  18. returnresult;  
  19.  
  20. }  

【編輯推薦】

  1. 實例解析Flex字體的使用
  2. FlexBuilder4十大新特性閃亮登場
  3. 學習總結(jié) 在Flex中如何嵌入Flex字體
  4. 揭開Flex正則表達式的神秘面紗
  5. FlexBuilder開發(fā)方法及特點解析 

 

責任編輯:佚名 來源: csdn.net
相關推薦

2009-09-23 17:00:07

Hibernate持久

2010-08-06 11:04:06

Flex模塊化

2010-06-28 18:44:54

UML對象圖

2010-07-30 10:58:03

Flex數(shù)據(jù)綁定

2010-08-09 10:34:05

Flex背景

2010-07-12 14:32:29

UML對象關系

2023-10-12 13:01:29

Redis數(shù)據(jù)庫

2010-08-11 09:21:37

2010-07-28 14:28:57

Flex國際化

2024-03-26 00:03:08

Redis數(shù)據(jù)RDB

2010-07-29 13:18:45

Flex右鍵菜單

2010-07-27 10:39:25

Flex組件

2010-07-29 15:36:23

Flex安全沙箱

2010-08-04 09:26:27

Flex數(shù)據(jù)

2010-08-10 16:41:54

FlexJSP

2009-09-29 16:11:45

Hibernate實現(xiàn)

2009-09-24 15:42:44

Hibernate對象

2010-07-27 15:49:28

Flex

2010-08-12 11:05:33

Flex數(shù)據(jù)綁定

2010-08-09 15:19:29

Flex滾動條
點贊
收藏

51CTO技術棧公眾號