可用性
Flash Player 6
Flash Media Server(不是必需的)
用法
[table][tr][td] SharedObject.getLocal(name [, localPath][, secure])
注意:正确的语法是SharedObject.getLocal()。若要将该对象分配到变量,请使用类似于var
myLocal_so:SharedObject =
SharedObject.getLocal(objectName)这样的语法。
参数
name 对象的名称。该名称可以包含正斜杠(/);例如work/addresses就是一个合法的名称。共享对象
名称中不允许使用空
格,也不允许使用以下字符:
~ % & \\ ; : " \' , < > ? #
localPath 一个可选的字符串参数,该参数指定指向创建共享对象的SWF文件的完整路径或部分路径,
并确定共享对象的本
地存储位置。默认值是完整路径。
secure (仅适用于Flash Player 8)一个可选的布尔值,决定对这个共享对象的访问是否被限定于经由一
个HTTPS连接被呈
递的SWF文件。假定你的SWF文件是经由HTTPS被呈递的:
如果这个参数被设置为true,Flash Player会创建一个新的安全共享对象或是获取一个对现有安全共
享对象的引用。当调
用SharedObject.getLocal()时使用了被设置为true的secure参数时,这个安全共享对象只能由经由
HTTPS被呈递的SWF文
件读取或写入。
如果这个参数被设置为false,Flash Player创建一个新的共享对象或是获取一个对现有共享对象的
引用。这个共享对象
可以由非经由HTTPS连接呈递的SWF文件读取或写入。
如果你的SWF文件是经由一个非HTTPS连接递送的,并且你试图把这个参数设置为true,则创建一个新
的共享对象(或是
对一个先前创建的安全共享对象的访问)的尝试会失败并会返回null。无论这个参数的值是什么,创建出的
共享对象都会朝着对
一个域所允许的最大磁盘空间累计。默认值是false。
下图展示了安全参数的使用:
返回
一个对共享对象的引用,该共享对象在本地是永久性的并且只可用于当前客户机。如果Flash无法创建
或找到共享对象(例
如,如果指定了localPath,但不存在此目录),则此方法返回null。
如果由第三方Flash内容创建和存储永久性共享对象被禁止了(对本地内容无此限制),则这个方法会
失败并返回null。用
户可以在设置管理器(Settings Manager)的全局存储设置(Global Storage Settings)面板中禁止第三方永久
性共享对象。
描述
方法。返回对只可用于当前客户机的本地永久共享对象的引用。要通过Flash Media Server创建一个对
多个客户机都可用的
共享对象,使用SharedObject.getRemote()。
注意:如果用户已经选择永远不允许这个域的本地存储,则这个对象将不会被本地存储,即使localPath
已经被指定了一个
值。
因为本地共享对象仅对单个客户机可用,因此,当这个对象被改变时,SharedObject.onSync处理器不会
被调用,并且也不需要实现冲突解决机制。
为了避免名称冲突,Flash会考虑创建共享对象的SWF文件的位置。例如,如果位于
的SWF文件创建了一个名为portfolio的共享对象,该共享对象不
会与位于
的SWF文件所创建的另一个名为portfolio的对象冲突,这是因为这两
个SWF文件源于两
个不同的目录。
例子
下面的范例创建了一个共享对象,它存储被输入到一个TextInput组件实例中的文本。这导致SWF文件
会在其开始播放时从
共享对象装载被保存的文本。每次用户输入回车键,文本域中的文本都会被写入到共享对象中。
要使用这个范例,把一个TextInput组件实例拖放到舞台上,并将其命名为myText_ti。把下面的代码拷
贝到主时间线中:
// 创建共享对象并把localpath设置为服务器根目录。
var my_so:SharedObject = SharedObject.getLocal("savedText", "/");
“undefined”。*/ myText_ti TextInput组件中。*/
if (myText_ti.text == undefined) {
myText_ti.text = "";
}
// 为<enter>事件创建一个侦听器对象和函数。
var textListener:Object = new Object();
textListener.enter = function(eventObj:Object) {
my_so.data.myTextSaved = eventObj.target.text;
my_so.flush();
};
// 把这个侦听器注册到TextInput组件实例。
};myText_ti.addEventListener("enter", textListener);
下面的范例保存用户输入到一个本地共享对象// 把这个侦听器注册到TextInput组件实例。 kookie中
的最后帧:
myText_ti.addEventListener("enter", textListener);
下面的范例保存用户输入到一个本地共享对象kookie中的最后帧:
// 得到kookie。
var my_so:SharedObject = SharedObject.getLocal("kookie");
// 得到kookie的用户并前往为这个用户保存的帧数。
if (my_so.data.user != undefined) {
this.user = my_so.data.user;
this.gotoAndStop(my_so.data.frame);
}
下面的代码块被放置在每一个SWF文件帧上:
// 在每一帧中,调用rememberme函数来保存帧数。
function rememberme() {
my_so.data.frame=this._currentframe;
my_so.data.user="John";
} |