通过使用SharedObject数据可以被存储在用户的本地硬盘上,功能非常像浏览器的cookie。Flex应用程序可以存储简单数据类型如String
、Array等,或者用户自定义的对象类型到一个指定的位置。
共享对象:本地共享对象(local SharedObject)和远端共享对象(Remote SharedObject)
本地共享对象(local SharedObject)类似于浏览器的cookie。
远端共享对象(Remote SharedObject):远端共享对象需要使用FMS(FMS是什么?),它更像是实时的数据传输设备。当你想在一个多人参与的聊天室中实时查看聊天记录时,你可以在这个聊天应用程序中使用远端共享对象。当一个远端共享对象在客户机的机器上被更新,它会回馈更新到服务器上的这个共享对象,并会影响和更新其他正在查看相同共享对象的机器上指定的共享对象。
创建或打开一个本地共享对象:
private var myLocalSharedObject:SharedObject = SharedObject.getLocal("mylso");
默认的位置是,C:\Documents and Settings\Administrator\Application Data\Macromedia\Flash Player\#SharedObjects\ {web域}\{应用程序路径}\{应用程序名}\{object}.sol
如果想指定一个其他的位置,静态方法的getLocal的第二个参数可以指定。
创建或打开一个远端共享对象:
private var myRemoteSharedObject;SharedObject = SharedObject.getRemote("myRso");
写入数据到共享对象中
使用共享的对象的data属性添加数据到共享对象中。
官方说明: The collection of attributes assigned to the data property of the object; these attributes can be shared and stored. Each attribute can be an object of any ActionScript or JavaScript type - Array, Number, Boolean, ByteArray, XML, and so on. For example, the following lines assign values to various aspects of a shared object:
var items_array:Array = new Array(101, 346, 483); var currentUserIsAdmin:Boolean = true; var currentUserName:String = "Ramona"; var my_so:SharedObject = SharedObject.getLocal("superfoo"); my_so.data.itemNumbers = items_array; my_so.data.adminPrivileges = currentUserIsAdmin; my_so.data.userName = currentUserName; for (var prop in my_so.data) { trace(prop+": "+my_so.data[prop]); } Note: Do not assign values directly to the data property of a shared object, as in so.data = someValue; Flash Player ignores these assignments. 保存本地共享对象
使用SharedObject的flush方法。
lso.flush(500);
从共享对象中读取数据
使用SharedObject的data属性来得到数据,怎么写的就怎么读的。
删除共享对象
使用SharedObject类的clean()方法来清除一个共享对象。使用delete关键字来移除一个共享对象的data属性中的指定数据。 这两种不一样。
lso.clean();对于本地共享对象,清除所有数据并从磁盘删除共享对象。对共享对象的引用仍然处于活动状态,但其数据属性被删除。
使用delete关键字,只是删除了它的data属性中的指定数据。但这个对象并未从磁盘中删除。
序列化类型对象
我想能保存自定义数据类型到一个共享对象中。
使用registerClassAlias()方法来注册类型化的对象到Flash运行时,然后存储这个对象实例到一个共享对象中。
例子:
、Array等,或者用户自定义的对象类型到一个指定的位置。
共享对象:本地共享对象(local SharedObject)和远端共享对象(Remote SharedObject)
本地共享对象(local SharedObject)类似于浏览器的cookie。
远端共享对象(Remote SharedObject):远端共享对象需要使用FMS(FMS是什么?),它更像是实时的数据传输设备。当你想在一个多人参与的聊天室中实时查看聊天记录时,你可以在这个聊天应用程序中使用远端共享对象。当一个远端共享对象在客户机的机器上被更新,它会回馈更新到服务器上的这个共享对象,并会影响和更新其他正在查看相同共享对象的机器上指定的共享对象。
创建或打开一个本地共享对象:
private var myLocalSharedObject:SharedObject = SharedObject.getLocal("mylso");
默认的位置是,C:\Documents and Settings\Administrator\Application Data\Macromedia\Flash Player\#SharedObjects\ {web域}\{应用程序路径}\{应用程序名}\{object}.sol
如果想指定一个其他的位置,静态方法的getLocal的第二个参数可以指定。
创建或打开一个远端共享对象:
private var myRemoteSharedObject;SharedObject = SharedObject.getRemote("myRso");
写入数据到共享对象中
使用共享的对象的data属性添加数据到共享对象中。
官方说明: The collection of attributes assigned to the data property of the object; these attributes can be shared and stored. Each attribute can be an object of any ActionScript or JavaScript type - Array, Number, Boolean, ByteArray, XML, and so on. For example, the following lines assign values to various aspects of a shared object:
var items_array:Array = new Array(101, 346, 483); var currentUserIsAdmin:Boolean = true; var currentUserName:String = "Ramona"; var my_so:SharedObject = SharedObject.getLocal("superfoo"); my_so.data.itemNumbers = items_array; my_so.data.adminPrivileges = currentUserIsAdmin; my_so.data.userName = currentUserName; for (var prop in my_so.data) { trace(prop+": "+my_so.data[prop]); } Note: Do not assign values directly to the data property of a shared object, as in so.data = someValue; Flash Player ignores these assignments. 保存本地共享对象
使用SharedObject的flush方法。
lso.flush(500);
从共享对象中读取数据
使用SharedObject的data属性来得到数据,怎么写的就怎么读的。
删除共享对象
使用SharedObject类的clean()方法来清除一个共享对象。使用delete关键字来移除一个共享对象的data属性中的指定数据。 这两种不一样。
lso.clean();对于本地共享对象,清除所有数据并从磁盘删除共享对象。对共享对象的引用仍然处于活动状态,但其数据属性被删除。
使用delete关键字,只是删除了它的data属性中的指定数据。但这个对象并未从磁盘中删除。
序列化类型对象
我想能保存自定义数据类型到一个共享对象中。
使用registerClassAlias()方法来注册类型化的对象到Flash运行时,然后存储这个对象实例到一个共享对象中。
例子: