栏目:游戏心得 2010-02-02
多个swf文件共享AS3 ShareObject
今天不推荐游戏,写写关于AS3 ShareObject的事情,要对得起网站的名字,游手也要好学。
1. ShareObject 可以说是FLASH Cookie,帮助手册原话是:ShareObject 类用于在用户计算机或服务器上读取和存储有限的数据量。 使用共享对象,可在永久贮存在本地计算机或远程服务器上的多个客户端 SWF 文件和对象之间实现实时数据共享。 本地共享对象类似于浏览器 Cookie,远程共享对象类似于实时数据传输设备。 若要使用远程共享对象,则需要一个服务器
2. ShareObject将共享文件存储到本地的存储规则是值得注意的,存储路径在 C:\Documents and Settings\Administrator\Application Data\Macromedia\Flash Player\#SharedObjects下边,在这个文件夹下有类似命名为7HMY2T3Z的文件夹,点进去才是ShareObject真正生成的文件目录。这个文件目录的生成规则值得注意,域 + swf所在根目录下的文件路径 + 以swf文件名命名的文件夹,这下边的.sol文件就是ShareObject共享文件。
比如 \www.8ria.com\flash\game.swf\riaSO.sol
www.8ria.com是域,后边就是根据swf存放在服务器上的路径生成的。
确切的说创建共享文件的swf文件路径是” www.8ria.com/flash/game.swf”。
game.swf所作的事情是 var so:SharedObject = SharedObject.getLocal(“riaSO.sol”);
然后你在对应一下swf和本地共享文件目录的关系,就很容易明白了,如下:
\www.8ria.com\flash\game.swf\riaSO.sol
与
www.8ria.com/flash/game.swf
3. ShareObject 实现多个swf文件共享的方法是:首先你不能灵活的设定ShareObject的读取路径,也不能灵活的设定ShareObject的写入路径,这些几乎是定死的,完全与你swf的存储位置有关。要想实现共享还必须在同一个域才可以。由于这些问题的存在实现多个swf文件共享一个ShareObject共享文件便的有点棘手。方法我目前想出了两个。
第一方法是设定getLocal的第2个参数为“/”,var so:SharedObject = SharedObject.getLocal(“riaSO.sol”,”/”); 这样生成的共享文件都在根目录下,所以只要在同一个域的swf都可以共享这个共享文件的数据,只是这样做共享文件就不能肆无忌惮的取名字,要考虑到命名重复的问题,如果第2个参数不设置话,共享文件就会按照目录规则保存在各自的文件夹下,就不用担心重命名问题,这点与as3包路径设置的道理有点类似。
第二个方式是单独做一个swf文件专门负责创建共享文件,然后所有其他的swf文件都可以通过读取这个swf来获得共享数据。
自己对ShareObject了解不是很深,可能存在更多,更好的方法。知道的达人欢迎更正指点。
收藏分享:
QQ书签 /
百度收藏 /
Google书签 /
收藏到鲜果 /
Digg /
Del.icio.us


