( Flash ActionScript)SharedObject类_01
2004-08-12 10:39
513 查看
SharedObject 类
可用性:
Flash Player 6.
Flash Communication Server MX
SharedObject非常的强大:它能为多个SWF文件和发布在本地或者网络的对象提供实时的数据共享服务.你可以把本地的SharedObject 看做是cookies,而网络的SharedObject 则可以看做是实时
的数据传送设备.SharedObject 的常用方法归结如下:
本地的数据存储
这是最简单的使用SharedObject 的方法,这种数据存储不需要Flash的服务器.举个例子:你可以调用SharedObject.getLocal() 来创建一个SharedObject对象,以便存储数据.共享对象在本地的
机器上是稳定的,当操作结束的时候,Flash 会将要存储的数据存放在用户的机器上.下次运行程序的时候,机器会记住上次程序结束时保存过的数据.相反的,如果你在程序结束以前把
SharedObject设成NULL值,那么下次再运行这个程序的时候,SharedObject就不会存储上次运行时候的数据了.
在服务器上存储和共享数据
SharedObject可以在Flash服务器上存储数据,其他的客户机器就能得到服务器上存储的数据.比如可以开一个网络的SharedObject存储一些电话号码.所有连上服务器的客户都能看到.如果有个
客户更改了SharedObject中的数据,这种改动可以反映到当前连接的用户和后来连接的用户的机器中.在客户机器没有连上服务器的时候,这些更改会暂时存储在客户机器上,等到下次连上服务
器的时候,在将数据传给服务器.
共享实时的数据
共享对象可以在同一时间在多个客户机之间存储数据,比如用共享对象来存储连接到聊天室的名单,此名单可以对所有的人员开放.如果有人进出聊天室,共享对象就被更新,并且把更改过的人员
名单数据给每个人员共享.
以下的例子将示范一些在ActionScript的环境下怎么使用共享对象,请注意,如果你要建立一个网络的共享对象,你首先要用RTMP协议连接到Flash 的Communication Server:
// Create a local shared object
var local_so:SharedObject = SharedObject.getLocal("foo");
// Create a remote shared object that is not persistent on the server
var my_nc:NetConnection = new NetConnection();
my_nc.connect("rtmp://server.domain.com/chat/room3";
var remote_so:SharedObject = SharedObject.getRemote("users", my_nc.uri);
remote_so.connect(my_nc);
// Create a remote shared object that is persistent on the server
// but not on the client
var my_nc:NetConnection = new NetConnection();
my_nc.connect("rtmp://server.domain.com/chat/room3";
var remote_so:SharedObject = SharedObject.getRemote("users", my_nc.uri, true);
remote_so.connect(my_nc);
// Create a remote shared object that is persistent on the server
// and on the client
var my_nc:NetConnection = new NetConnection();
my_nc.connect("rtmp://server.domain.com/chat/room3";
var remote_so:SharedObject = SharedObject.getRemote("users", my_nc.uri, "/chat");
remote_so.connect(my_nc);
数据的建立和使用
共享对象中的数据存储在共享对象的"data"属性中,每个属性对应一个变量.
比如,下面的话将三个变量赋给共享对象.
my_so.data.userID = "myLogonName";
my_so.data.currentStatus = "in a meeting";
my_so.data.lastLogon = "February 27, 2002";
当一个客户改变了一个数据,共享对象中所有和它有关的变量值就回避传送到服务器和其他所有连接到共享对象的客户.所以,一个变量包含的信息量越多,当它改变时所要占用的网络资源也就
更多.
举例来说,一个共享对象有以下的属性中存储了一个变量:
my_so.data.year.month.dayOfMonth = someValue;
就算一个客户改变了年,月和日当中的任何一个属性,这个变量就算是被改变了,
比较一下下面的数据结构,和上面存储了相同的信息,不同的是平行的定义了三个变量来代替以前的一个:
my_so.data.year = someValue;
my_so.data.month = someValue;
my_so.data.dayOfMonth = someValue;
在这个例子中,因为每个变量中就存储了一小条信息,所以在改变了其中一个属性的时候,所用的带宽要少.
在你建立那种实时的更新数据的网络共享对象的时候可以借鉴一下这个方法,细化数据的信息量可以提高性能.这样的数据设计还可以减少数据的冲突(可能会有多个用户同时修改一个变量)
可用性:
Flash Player 6.
Flash Communication Server MX
SharedObject非常的强大:它能为多个SWF文件和发布在本地或者网络的对象提供实时的数据共享服务.你可以把本地的SharedObject 看做是cookies,而网络的SharedObject 则可以看做是实时
的数据传送设备.SharedObject 的常用方法归结如下:
本地的数据存储
这是最简单的使用SharedObject 的方法,这种数据存储不需要Flash的服务器.举个例子:你可以调用SharedObject.getLocal() 来创建一个SharedObject对象,以便存储数据.共享对象在本地的
机器上是稳定的,当操作结束的时候,Flash 会将要存储的数据存放在用户的机器上.下次运行程序的时候,机器会记住上次程序结束时保存过的数据.相反的,如果你在程序结束以前把
SharedObject设成NULL值,那么下次再运行这个程序的时候,SharedObject就不会存储上次运行时候的数据了.
在服务器上存储和共享数据
SharedObject可以在Flash服务器上存储数据,其他的客户机器就能得到服务器上存储的数据.比如可以开一个网络的SharedObject存储一些电话号码.所有连上服务器的客户都能看到.如果有个
客户更改了SharedObject中的数据,这种改动可以反映到当前连接的用户和后来连接的用户的机器中.在客户机器没有连上服务器的时候,这些更改会暂时存储在客户机器上,等到下次连上服务
器的时候,在将数据传给服务器.
共享实时的数据
共享对象可以在同一时间在多个客户机之间存储数据,比如用共享对象来存储连接到聊天室的名单,此名单可以对所有的人员开放.如果有人进出聊天室,共享对象就被更新,并且把更改过的人员
名单数据给每个人员共享.
以下的例子将示范一些在ActionScript的环境下怎么使用共享对象,请注意,如果你要建立一个网络的共享对象,你首先要用RTMP协议连接到Flash 的Communication Server:
// Create a local shared object
var local_so:SharedObject = SharedObject.getLocal("foo");
// Create a remote shared object that is not persistent on the server
var my_nc:NetConnection = new NetConnection();
my_nc.connect("rtmp://server.domain.com/chat/room3";
var remote_so:SharedObject = SharedObject.getRemote("users", my_nc.uri);
remote_so.connect(my_nc);
// Create a remote shared object that is persistent on the server
// but not on the client
var my_nc:NetConnection = new NetConnection();
my_nc.connect("rtmp://server.domain.com/chat/room3";
var remote_so:SharedObject = SharedObject.getRemote("users", my_nc.uri, true);
remote_so.connect(my_nc);
// Create a remote shared object that is persistent on the server
// and on the client
var my_nc:NetConnection = new NetConnection();
my_nc.connect("rtmp://server.domain.com/chat/room3";
var remote_so:SharedObject = SharedObject.getRemote("users", my_nc.uri, "/chat");
remote_so.connect(my_nc);
数据的建立和使用
共享对象中的数据存储在共享对象的"data"属性中,每个属性对应一个变量.
比如,下面的话将三个变量赋给共享对象.
my_so.data.userID = "myLogonName";
my_so.data.currentStatus = "in a meeting";
my_so.data.lastLogon = "February 27, 2002";
当一个客户改变了一个数据,共享对象中所有和它有关的变量值就回避传送到服务器和其他所有连接到共享对象的客户.所以,一个变量包含的信息量越多,当它改变时所要占用的网络资源也就
更多.
举例来说,一个共享对象有以下的属性中存储了一个变量:
my_so.data.year.month.dayOfMonth = someValue;
就算一个客户改变了年,月和日当中的任何一个属性,这个变量就算是被改变了,
比较一下下面的数据结构,和上面存储了相同的信息,不同的是平行的定义了三个变量来代替以前的一个:
my_so.data.year = someValue;
my_so.data.month = someValue;
my_so.data.dayOfMonth = someValue;
在这个例子中,因为每个变量中就存储了一小条信息,所以在改变了其中一个属性的时候,所用的带宽要少.
在你建立那种实时的更新数据的网络共享对象的时候可以借鉴一下这个方法,细化数据的信息量可以提高性能.这样的数据设计还可以减少数据的冲突(可能会有多个用户同时修改一个变量)
相关文章推荐
- Flash ActionScript (12)间隔循环的3种表现方式
- Flash Air ActionScript3 二进制数据写入文件
- 《Flash ActionScript 3.0 动画高级教程》
- flash actionscript 3.0 动画教程:函数之形式参数和实际参数
- Flash ActionScript.——加载配置文件时出现乱码
- Flash ActionScript 3 殿堂之路学习笔记
- Flash ActionScript 3.0 通过asp.net 访问 数据库
- FlashBuilderActionScript项目嵌入中文字体
- Flash ActionScript 3 殿堂之路学习笔记
- Flash/ActionScript读写SQLite二进制字段里的图片文件
- [原创]FlashActionScript序列化和反序列化的实现(第一版)
- actionscript.org上的论坛–找到你在Flash使用/开发过程中问题答案的好地方
- Flash ActionScript 3 殿堂之路学习笔记
- 积少成多Flash ActionScript 3.0(7) - 交互之鼠标事件和键盘事件
- Flash ActionScript 3 殿堂之路学习笔记
- Flash ActionScript3代码制作文字渐变+描边
- [FLASH] Create a Dynamic Slideshow with ActionScript 3.0 and XML
- Flash.ActionScript.3.0动画教程_code1
- Flash ActionScript 3编程的总结
- Flash ActionScript (15) as2.0与as3.0区别