如何解决Flex对象持久化问题
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章主要为大家展示了"如何解决Flex对象持久化问题",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何解决Flex对象持久化问题"这篇文章吧。关于Fl
千家信息网最后更新 2025年11月09日如何解决Flex对象持久化问题
这篇文章主要为大家展示了"如何解决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对象持久化问题"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
对象
服务器
服务
内容
问题
篇文章
过程
例子
拷贝
学习
帮助
也就是
也就是说
只是
序列
数据
数据库
文件
方法
易懂
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
发包软件开发
0基础学软件开发招生
信息网络安全保密知识
无线路由服务器名称是什么
方配在线考试系统数据库在哪
网络安全专业包括哪些
qq邮箱服务器错误
php登录的数据库语句
科技开局怒怼互联网巨头笔趣阁
php数据库安全总结
研究生网络安全考什么专业
数据库视图开好了怎么测试
文献数据库有那些基本类型
乔安云监控有服务器吗
关于软件开发的造船的图片
软件开发更新的意义
鸿蒙连接服务器
8台服务器可以接几条线路
现在的网络技术
数据库管理系统安全的策略
安庆医院软件开发
关系型数据库 视图
僵尸毁灭工程无法建立服务器
方舟创建非专用服务器啥意思
计算机网络安全隐患解决策略
互联网科技大佬是谁
买服务器挂梯子
金融行业的软件开发公司
澳洲vpn服务器地址
sd卡拷不了太大的数据库