[table][tr][td] 可用性
Flash Player 6
Flash Media Server(不是必需的)
共享对象相当的强大:它们提供了在多个客户机SWF文件和本地或远端位置的永久性对象间实时的数
据共享。你可以把本
地共享对象看作是“cookies”,而把远端共享对象看作是实时数据传输设备。使用共享对象的普通方式在下
面进行了汇总。
永久性的维持于本地
这是使用共享对象的最简单的方式,不需要Flash Media Server。例如,你可以调用
SharedObject.getLocal()来创建一个
共享对象,比如Flash Player中的一个带有内存的计算器。因为共享对象是本地永久性的,因此,在应
用程序结束时,Flash
会把它的数据属性存储在用户的计算机上。当应用程序下次运行时,这个计算器会包含当应用程序结
束时它所持有的值。
作为另一种选择,如果在应用程序结束前你把共享对象的属性设置为null,则下次应用程序运行时,这
个计算器打开时不会
带有任何先前的值。
在服务器上存储和共享数据
一个共享对象可以在Flash Media Server上存储数据,以便其他客户机可以进行检索。例如,你可
以打开一个远端共享
对象,比如一个电话列表,这个电话列表是维持在服务器上的。任何时候一个客户机对这个共享对象
作了任何改变,这一
修订过的数据就对当前或以后连接到这个对象的所有客户机都可用。如果这个对象也永久于本地,并
且有一个客户机在没
有连接到服务器的情况下对数据作了改变,则当下次这个客户机连接到这个对象时,改变会被拷贝到
远端共享对象。
实时共享数据
一个共享对象可以实时的在多个客户机之间共享数据。例如,你可以打开一个存储实时数据的远
端共享对象,比如一
个连接到某个聊天室的所有用户的列表,它对连接到这个对象的所有客户机而言都是可见的。当一个
用户进入或离开聊天
室时,这个对象会被更新,并且连接到这个对象的所有客户机都会看到修订过的聊天室用户列表。
下面的范例展示了共享对象在ActionScript编程中被调用的几种方式。你会注意到,为了创建一个远端
共享对象,你必须首
先用RTMP协议连接到Flash Media Server。
//创建一个本地共享对象
var local_so:SharedObject = SharedObject.getLocal("foo");
//
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);
//创建一个永久于服务器上的远端共享对象,
//但它不维持在客户机上。
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);var remote_so:SharedObject = SharedObject.getRemote("users", my_nc.uri, true);
remote_so.connect(my_nc);
//创建一个永久于服务器上同时也维持于客户机上的远端共享对象。
// 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); |