继之前说的Air程序中使用Loader存在内存泄漏的问题,我们通过使用HTML组件来替换掉Loader,HTML组件模仿的是一个浏览器,通过加载渲染出所指向的页面,当HTML销毁(浏览器关闭)时,内存会自动回收。
但是使用了这个后,还有问题就是:
1、AIR怎么调用HTML里面的SWF里的public function?
2、同样,HTML里面的SWF怎么访问外面的AIR?
下面看一下这段代码,你就发现原来可以这么简单的:
看了这段代码,相信问题1,2就不难解决了,只要加上一部分JS和SWF交互的知识(博客有相关文章),就可以实现了。
你也可以再Air中直接返回JS中的document,使用方式var doc = xxx.domWindow.document;就可以直接调用里面的getElementById()等等方法,具体可以通过Debug查看具体结构。
还有,项目中我们有这样的需求,就是AIR端会请求服务器,HTML里面的SWF也会请求服务器,但是他们同样使用HTTPService,服务器给它们分配的Cookies是不是一样的,就像我在浏览器中登陆时,服务器会返回一个:
Cookie: BAIDUID=546DF84FD16A61645303D10F3C822C2B:FG=1
标示我的身份的。
同样的请求,我们发现两次请求的Cookies一样。Done!