中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解決Flex對象持久化問題

發布時間:2021-12-06 11:04:40 來源:億速云 閱讀:214 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“如何解決Flex對象持久化問題”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何解決Flex對象持久化問題”這篇文章吧。

關于Flex對象持久化

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

我們來看這樣一個例子:

viewplaincopytoclipboardprint?  privatefunctiontest():void{  varcanvas:Canvas=newCanvas();  canvas.width=100;  canvas.height=100;  //保存到ByteArray  varb:ByteArray=newByteArray();  b.writeObject(canvas);   //取出對象  b.position=0;  varo:Object=b.readObject();  varc:Canvas=objectToInstance(o,Canvas)asCanvas;  trace(c.width);  trace(c.height);  this.addChild(c);  }

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

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

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

viewplaincopytoclipboardprint?  privatefunctiontest():void{  varcanvas:Canvas=newCanvas();  canvas.width=100;  canvas.height=100;  //保存到ByteArray  varb:ByteArray=newByteArray();  b.writeObject(canvas);  //保存到服務器  remoteObject.Save(b);  }

然后在服務器端:

viewplaincopytoclipboardprint?  publicvoidSave(ByteArrayba)  {  //可以保存到文件  FileStreamfs=newFileStream(Path,FileMode.Createm,FileAccess.Write);  fs.Write(ba.GetBuffer(),0,ba.GetBuffer().Length);  fs.Close();  //=====  //或者保存到數據庫  newFlexObjectDAO().Save(ba.GetBuffer);  }

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

viewplaincopytoclipboardprint?  privatefunctiontest():void{  //取出對象  remoteObject.Load();  }   privatefunctionremoteObjectResult(event:ResultEvent):void{  varb:ByteArray=eent.resultasByteArray;  b.position=0;  varo:Object=b.readObject();  varc:Canvas=objectToInstance(o,Canvas)asCanvas;  trace(c.width);  trace(c.height);  this.addChild(c);  }

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

objectToInstance方法的內容:

viewplaincopytoclipboardprint?  publicstaticfunctionobjectToInstance(object:Object,clazz:Class):*  {  varbytes:ByteArray=newByteArray();  bytes.objectEncoding=ObjectEncoding.AMF0;  varobjBytes:ByteArray=newByteArray();  objBytes.objectEncoding=ObjectEncoding.AMF0;  objBytes.writeObject(object);  vartypeInfo:XML=describeType(clazz);  varfullyQualifiedName:String=typeInfo.@name.toString().replace(/::/,".");  registerClassAlias(fullyQualifiedName,clazz);  varlen:int=fullyQualifiedName.length;  bytes.writeByte(0x10);//0x10isAMF0for"typedobject(classinstance)"  bytes.writeUTF(fullyQualifiedName);  bytes.writeBytes(objBytes,1);  bytes.position=0;  varresult:*=bytes.readObject();  returnresult;   }

以上是“如何解決Flex對象持久化問題”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石景山区| 城口县| 宁津县| 岫岩| 江油市| 榕江县| 舞钢市| 如皋市| 绥芬河市| 宿迁市| 汉中市| 漳浦县| 张家川| 芦山县| 舞阳县| 朝阳区| 新津县| 凭祥市| 洛浦县| 育儿| 临澧县| 海兴县| 泰宁县| 溆浦县| 夹江县| 益阳市| 合山市| 揭东县| 靖安县| 西贡区| 西安市| 五指山市| 阿瓦提县| 伽师县| 赤壁市| 天台县| 景东| 寻乌县| 正宁县| 宜都市| 鄯善县|