【转】使用AS3 SharedObject & 本地两个swf通过SO进行数据通信

*注意: 本地的两个swf或已被其它exe打包工具打包成EXE后,如果要想通过sharedObject进行 通信,必须在 var example:SharedObject = SharedObject.getLocal("example", "/");   的第二个参数中不能为空(至不有个"/"),否则会取不到值。 【使用SharedObject及捕获异常】

【向LSO储存对象时需要注意】
LSO使用二进制的AMF(Action Message Format)对一个对象进行编码.当你在LSO储存类对象时,该对象会编码成包含内容属性的普通对象.于是,当你试着从共享对象里读取该对象时,无法被 读成某类的对象,因为没有类型数据.要克服这个限制,使用flash.net.registerClassAlias()方法.
任何影片中,只要从共享对象读取出自定义对象数据,自定义类就必须注册别名,而且调用registerClassAlias()方法时必须在SharedObject.getLocal()方法被调用之前.

【要相同域名内的两个影片可以存取相同LSO】
首先LSO是储存在以下目录下:
C:/Documents and Settings/[user name]/Application Data/Macromedia/Flash Player/#SharedObjects
例如,如果来自于http://www.riahome.cn/youthoy 的影片movie.swf写入名为example的LSO,则数据会储存在以下位置:
C:/Documents and Settings/[user name]/Application Data/Macromedia/Flash Player/#SharedObjects/[random directory name]/riahome.cn/youthoy/movie.swf/example.sol
如果在这个movie.swf里的代码是这样的: var example:SharedObject = SharedObject.getLocal("example", "/"); 也就是使用了选用的本地路径参数,则LSO会储存在以下路径,注意到与以上路径少了"youthoy/movie.swf":
C:/Documents and Settings/[user name]/Application Data/Macromedia/Flash Player/#SharedObjects/[random directory name]/riahome.cn/example.sol
以此方法建立的LSO,可以由相同域的其它Flash影片用以下程序来读取:
var example:SharedObject = SharedObject.getLocal("example", "/");
再看一个例子:
有两个Flash影片movieOne.swf和movieTwo.swf都位于同一域(http://www.riahome.cn )内,但是,movieOne.swf位于http://www.riahome.cn/youthoy/firstGroup ,而movieTwo.swf位于http://www.riahome.cn/youthoy/secondGroup. 在这情况里,movieOne.swf可以用下列任何本地路径建立和读取LSO:
/
/youthoy
/youthoy/firstGroup
而movieTwo.swf可以用下列任何本地路径建立和读取LSO:
/
/youthoy
/youthoy/secondGroup
因此,如果你想要两个影片都可以读取相同LSO,当你调用getLocal()方法时,必须指定影片共享的两个本地路径之一(/或/youthoy).

【URLLoader.dataFormat的三种类型】
URLLoader.dataFormat的可选值是:
flash.net.URLLoaderDataFormat.BINARY
flash.net.URLLoaderDataFormat.TEXT
flash.net.URLLoaderDataFormat.VARIABLES
当dataFormat是BINARY时,URLLoader.data属性就是flash.utils.ByteArray类型;
当dataFormat是TEXT时,URLLoader.data属性就是String类型;
当dataFormat是VARIABLES时,uRLLoader.data属性就是Object类型.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值