日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
學(xué)習(xí)筆記解析Flex對象持久化問題

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

成都創(chuàng)新互聯(lián)主要從事做網(wǎng)站、成都做網(wǎng)站、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)沁縣,10余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220

關(guān)于Flex對象持久化

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

我們來看這樣一個例子:
 

 
 
 
  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.  

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

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

那么在中間的過程加入服務(wù)器操作,道理也應(yīng)如此:

 
 
 
  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. //保存到服務(wù)器  
  10. remoteObject.Save(b);  
  11. }  

然后在服務(wù)器端: 

 
 
 
  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對象,并處理,服務(wù)器端的讀取程序我就不寫了,只寫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. 學(xué)習(xí)總結(jié) 在Flex中如何嵌入Flex字體
  4. 揭開Flex正則表達(dá)式的神秘面紗
  5. FlexBuilder開發(fā)方法及特點解析 

當(dāng)前標(biāo)題:學(xué)習(xí)筆記解析Flex對象持久化問題
網(wǎng)址分享:http://m.5511xx.com/article/ccscgdd.html