




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北风网项目培训,第13讲:Flex中的共享对象,讲师:风舞烟,应用Flex+ASP.net技术构建大型网上书店电子商务交易平台全程实录,目录,为什么需要共享对象?Flex中的持久化数据ShareObject的特点如何使用ShareObject综合示例,为什么需要共享对象?,持久化数据所谓持久化数据,就是当用户来使用你的应用程序时,由你的本地或者网络应用程序来存储、访问数据,以及在多个会话中来提供容量来存贮状态信息。,Flex中的持久化数据,Flex中的持久化数据(ShareObject)通过使用ShareObject数据可以被存贮在用户的本地硬盘上。ShareObject的功能非常像浏览器的cookie。并能允许你的Flex应用程序去存储简单数据类型(例如String和Array)并能注册自定义的数据类型到文件系统中一个应用程序制定的位置,这个为遏制可以被多个会话访问。和浏览器的cookies不同的是,ShareObject由一个较大的文件大小限制(100k),并且可以通过动作脚本消息格式(AMF)来序列化。AMF是被用来序列化AS对象以及在服务端和客户端之间通过FlashRemoting技术来传输remoting对象的一种二进制文件格式。,什么是ShareObject,实际上ShareObject的行为有些像浏览器的cookies,ShareObjects常常被成为FlashCookies,它可以:维护本地持久化在FlashMediaServer服务器上存储共享数据。实时共享数据,ShareObject的特点,你可以使用ShareObject来存贮数据到用户的硬盘上并且在应用程序的当前会话或者以后的会话来获取这些数据。无论如何,一个ShareObject只能被创建它的应用程序所访问。另外,应用程序对ShareObject的访问被限制,只能运行于相同的域。一个应用程序不能访问定位到不同域的ShareObject。,AS中ShareObject类型,ActionScript3提共了两种类型的ShareObject:本地共享对象(LocalSharedObjects)类似于浏览器cookie,本地存贮对象适于用力维护和持久化多个会话中的数据。远端共享对象(RemoteShareObjects)远端共享对象需要使用FMS,它更像是实时的数据传输设备。当你想要在一个多人参与的聊天室中实时查看聊天记录时,你可以在这个聊天应用程序中使用远端共享对象。当一个远端共享对象在客户端的机器上被更新,它会回馈更新到服务器上的这个共享对象,并会影响和更新其他正在查看相同共享对象的机器上指定的共享对象。,如何使用ShareObject,创建或者打开一个已经存在的本地共享对象,使用如下代码privatevarlocalShareObj:SharedObject=SharedObject.getLocal(mylso);静态方法getLocal返回一个客户端上的共享对象的引用。对于远端共享对象,使用如下代码:privatevarmyRemoteObj:SharedObject=SharedObject.getRemote(myRso);静态方法getRemote返回一个FMS上能被多个客户端访问到的共享对象引用,说明:静态方法getRemote返回一个FMS上能被多个客户端访问到的共享对象引用。在调用了getLocal或者getRemote之后,例子会在客户端机器上使用一个*.sol连接来打开或者创建一个文件。至此,上面的例子会以两位个文件名作为结束myLso.sol和myRso.sol.SOL文件的默认位置依赖于正在运行的操作系统。这些位置对应不同的操作系统,如下所示:Windows95/98/ME/2000/XPC:/DocumentsandSettings/用户域/ApplicationData/Macromedia/FlashPlayer/#SharedObjects/web域/应用程序路径/应用程序名/object.sol默认情况,共享对象的最大文件大小是100kb,如何向共享对象中写入数据?,你可以使用SharedObject类的data属性来添加数据到一个共享对象的SOL文件。这个是特殊的属性允许你持久化标准类型和非标准类型的数据。如:/获取一个存在的共享对象;或者创建这个对象publicvarsoInstance:SharedObject=SharedObject.getLocal(myLso);/字串存贮publicvaroString:String=AdobeFlex4;soInstance.data.oPhrase=oString;/数组存贮publicvaroArrayItems:Array=10,11,12;soInstance.data.oArrayNumbers=oArrayItems;/布尔值存贮publicvaroBoolean:Boolean=true;soInstance.data.oDecision=oBoolean;lso.flush();,注意事项:1、试图直接指定共享对象的实例会引起一个编译类型错误:/引发编译错误soInstance.variable=compileerror;2、当指定实例数据到data属性时,必须确保没有直接指定值,而是使用了一个变量/也会引发编译错误soInstance.data=compileerror;,3、默认情况下,一个应用程序创建一个共享对象,在应用程序退出时会自动写SOL文件到文件系统,而不管共享对象指定的默认文件大小。在会话打开时,SharedObject.flush方法被用来将这些数据保存到SOL文件。SOL文件大小默认最大为100kb。你也可以使用flush方法的minDiskSpace参数来改变已经分配的文件大小。如:lso.flush(5000);最终用户可以使用AdobeFlash播放器浏览器插件的设置管理器来允许你的应用写文件到硬盘,以及分配SOL文件大小和访问。,4、当flush方法被调用,它会尝试写数据到客户端电脑。flush调用的结果是如下三个可能之一:a.如果用户禁止对应域的本地共享对象(LSO)存贮,或者如果Flash播放器存贮数据因为相同原因失败,数据就不会被存贮并且flush方法会抛出一个错误b.如果保存本地共享对象所需要的磁盘空间小于对于对应域本地存贮设置的大小,数据会被写到磁盘上并且方法会返SharedObjectFlushStatus.FLUSHED,来标示方法成功运行。c.如果给flush方法赋予了可选参数最小磁盘空间,则已经被分配的磁盘空间必须大于或者等于这个数值,才能成功运行flush。d.如果共享对象的数据需要大于已分配空间的,则用户会被提示来允许足够的空间大小访问,用来存贮数据。当这个(对用户提示)发生时,会返回SharedObjectFlushStatus.PENDING.当用户允许了访问之后,超出的空间会自动被分配并且数据会被保存,示例1(Demo1),从共享对象中读取数据,ShardObject.getLocal()方法用来访问你的应用程序存贮在用户硬盘上的本地共享对象。如果调用了getLocal()方法的时候共享对象还不存在,默认会创建一个新的SOL文件,可以通过data属性来访问共享对象中预先存储的数据。,示例2(Demo2):MXML代码:,脚本:privatevarlso:SharedObject;privatefunctionreadSharedObject():voidvarsampleData1:String=admin;lso=SharedObject.getLocal(mylso);if(lso.data.someData1=undefined)lso.data.someData1=sampleData1;lso.flush();status.text+=lso文件被赋值为:+lso.data.someData1+nn;elsestatus.text+=读取的lso文件的内容:+lso.data.someData1+n;,删除共享对象中的数据,1、要从磁盘上清除一个共享对象,可以用clear()方法来清除一个共享对象2、从一个共享对象中删除数据的一个指定位置。可以用delete关键字来移出一个共享对象的data属性中的制定数据,示例(Demo3)MXML:,fx:Script,序列化类型对象,问题我想要能去保存自定数据类型的对象到一个共享对象中。解决办法使用registerClassAlias()方法来注册类型化的对象到Flash运行时,然后存贮这个对象实例到一个共享对象。,当存贮类型化数据到一个共享对象时,应确保已经在运行时注册了类型化对象,这样在特殊的情况发生时候你的应用程序才能确切地指导如何序列化和反序列化这个对象registerClassAlias(package.ClassType,ClassType);registerClassAlias方法需要2个参数。第一个参数:是目标对象的完整限定类名以字符串的形式,通常就是类的别名。第二个参数:是你想要注册到第一个参数所提供的类名的对象。,示例(Demo4)packageModelspublicclassAutomobileprivatevar_make:String;publicfunctiongetmake():Stringreturn_make;publicfunctionsetmake(value:String):void_make=value;privatevar_model:String;publicfunctiongetmodel():Stringreturn_model;publicfunctionsetmodel(value:String):void_model=value;,privatevar_year:Number;publicfunctiongetyear():Numberreturn_year;publicfunctionsetyear(value:Number):void_year=value;publicfunctionAutomobile()super();publicfunctiontoString():Stringreturnmake:+_make+nmodel:+_model+nyear:+_year;,MXML:,Script:,当你需要存贮指定的数据到用户的本地机器上时,上面的方法非常有效,特别是大的强类型值对象。通过注册类和初始化一个对象,你可以避免处理XML或者文本数据的运算开销,还能很好的维护对象的属性和类型。,在多个应用程序中访问同一个共享对象,问题想要在同一台机器上不同的Flex应用程序中共享使用同一个对象解决办法在调用SharedObject.getLocal()方法的时候,指定一个外部路径。SharedObject.getLocal()方法的第二个参数指定了本地硬盘存贮这个共享对象的位置。,SharedObject.getLocal(objectName,pathnameoptionalparameter):SharedObject如果你指定了
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 解析卷安徽省天长市七年级上册有理数及其运算单元测评试题(含解析)
- 医院感染管理应知应会考试试题(附答案)
- 耳鼻喉口腔颌面外科院感试题(附答案)
- 2025年生态修复中生物多样性保护与生态修复工程可持续发展研究报告
- 2025年老年健康管理领域长期照护服务模式政策法规解读报告
- 2025年海洋生态修复项目环境影响评价报告
- 2025年文化娱乐行业消费者行为分析:细分市场细分与用户体验报告
- 2025年工业互联网平台射频识别(RFID)在图书管理系统的应用与效率提升报告
- 2025至2030年中国猫粮市场竞争格局及投资战略规划报告
- 诉讼和解协议书示例
- 婚内忠诚协议书标准版
- 2025年高考真题语文全国一卷试题试卷及参考答案
- (高清版)DB1301∕T 345-2020 优 质冬小麦石农952栽培技术规程
- 乡土中国读书分享课件
- 2025年反假币知识竞赛题库及答案
- 餐饮技术入干股协议书
- 教科版五年级上册科学教学计划附进度表
- 水果和蔬菜深加工技术项目可行性研究报告
- 老年患者体位护理
- 2025新译林版英语八上单词默写表(先鸟版)
- 2025年执业医师考试临床技能试题及答案
评论
0/150
提交评论