绕开安全沙箱跨域调用Swf中的方法
Flash作为一个跨域跨平台的产品,可以让开发者很便利地开发出跨域的产品, 之前我使用本地通讯对象做了一个通讯平台的本地代理, 例如: 一款横向的互联网应用程序,它是实时链接到服务器的,可以通过Socket或是Rtmp等方式,那么,当用户同时找开N个网页的时候,每一个应用程序都有可能与服务器建立一个链接,而采用本地通讯对象做一个本地通讯平台的代理很具优势,它可以大大减少服务器端的负荷. 但是作为这样一个产品其安全性要求应该是比较严格的. 自从学习Flash AS以后, 之前我就发现了一个安全沙箱的问题. 今天我又发现一个,即: 绕开安全沙箱跨域调用Swf中的方法. 之前听到大伙就跨域加载位图无法访问里面的数据的问题已有解决方法,而我这里是对跨域加载异域的Swf并实例化里面的资源或是类,并调用这些类.各位看到我的代码可以去测试一下. 思路如下:
1.通过URLLoader以二进制的方式加载异域的SWF.
2.加载得到的二进制通过Loader.loadBytes()方法再加载一次. [这里并不会影响加载执行的效率,因为是在内存中进行的.]
3.然后在Loader加载成功的方法里面用: content=event.currentTarget;保存.
4.这个时候你会发现content已经是一个Loader了.而里面的contentLoaderInfo.content已经是一个MovieClip了.
5.你可以通过content.contentLoaderInfo.applicationDomain.getDefinition(name)的方式实例化里面的资源了.
---------------------------------------------------------------------------------------
代码在"Flash本地运行库探索"里面已基本列出来加载的方法. 这里不描述了.