如果一个Flash程序建立了共享对象,并在随后进行访问,将不会引发访问地址的问题。因为FlashPlayer会使用相同的机制确定数据共享对象的存储路径。
但是如果不同的Flash程序共用数据共享对象,则必须考虑这些SWF文件的访问路径。默认情况下,存储在“http://www.sample.com/redbox/pinkcore/”路径位置的“lolicon.swf”文件,将不能访问“http://www.sample.com/bluebox/crycore/”路径位置的“obacon.swf”文件所创建的数据共享对象。
利用getLocal()方法和getRemote()方法的第二个参数,可以限制数据共享对象的存储位置。FlashPlayer对数据共享对象存储位置的控制是内部机制,可能会随着版本而发展,但是其基本出发点是按照Flash应用程序的存储路径区分各自创建的数据共享对象。“http://www.sample.com/redbox/pinkcore/”路径位置的“lolicon.swf”文件,可以设置存储路径为“/redbox/pinkcore/”,则“http://www.sample.com/bluebox/crycore/”路径位置的“obacon.swf”文件,其参考路径为“/bluebox/crycore/”。因此两者不能在默认位置访问到对象的数据共享对象。
如果“lolicon.swf”文件的参考存储路径被设置为“/redbox/”,则“http://www.sample.com/redbox/”路径下的其他Flash应用就能访问其共享对象,但“obacon.swf”文件依然不属于可访问的范围。如果不考虑命名的冲突,可以将参考路径设置为“/”,此时的可访问范围将达到最大,“obacon.swf”文件也能够使用相同的参考路径,获得“lolicon.swf”文件创建的数据共享对象。
除了参考路径的设置,数据共享对象还会根据Flash应用程序的安全访问设置而改变位置。对于仅能访问本地文件系统的应用程序,它们的数据共享对象集中在一起。但是对于允许访问网络和远程文件Flash程序,其数据共享对象集中存放在另外的位置。
有时,即使位置正确,也可能无法访问数据共享对象。在getLocal()方法和getRemote()方法中,提供了控制安全级别的参数。如果该参数为true,则http与https将被区别对待。一个处在http安全级别的SWF文件,不能获得https级别的Flash应用程序创建的数据共享对象。