复制代码flash.system.Security.allowDomain("*"); flash.system.Security.allowInsecureDomain("*"); 上面就是严格的写法,AS3还好说,大家要注意一下AS2,AS2是木有flash.system这个包的,但是你import flash.system并不会报错,所以如果你把AS3的代码复制进去运行虽然一切正常,但是实际是木有任何效果的。一定要注意! 上面的代码就是说允许Flash去访问任何URL资源,如果只想访问特定的URl,就把*改成该URL即可,如果多个URl,就用逗号分隔就可以了,注意allowInsecureDomain是允许访问带验证的URL资源,比如https打头的,如果你访问的只是普通http的话就不需要了。 3、html的设置:
如果你需要和页面的JS通信,那么html里就必须有这样一个参数:
复制代码<param name="allowScriptAccess" value="always" /> 参数always表示始终允许脚本访问,如果是never,就表示始终不允许。 4、加载外部资源: 如果你要读取一个外部文件,比如swf,picture,mp3等等,那么就需要一个跨域策略文件(crossdomain.xml),这个其实就是一个xml文件,具体内容是:
复制代码<?xml version="1.0"?> <cross-domain-policy> <allow-access-from domain="www.explorechn.com" /> <allow-access-from domain="explorechn.com" /> <allow-access-from domain="223.4.119.191" /> </cross-domain-policy> 这就是跨域策略文件,allow-access-from domain表示允许访问的URl,如果有多个依次添加,如果允许所有就一个 allow-access-from domain = "*"就可以了。 需要说明一下这个文件该怎么用,如果你的Flash在a.com下,你需要访问b.com的资源,那么把这个xml放在b.com的根目录就可以自动访问了,当然,你也可以访问其他目录的策略文件。
复制代码flash.system.Security.loadPolicyFile(URL:String); 通过这个loadPolicyFile就可以主动去加载一个安全策略文件了,注意上面是AS3的写法,AS2不一样哦,参考上面的写法。 5、各个浏览器的跨域问题: IE就不说了,这个基本没啥问题,包括Flash自己生成的Html就对IE的支持做的很好,这里就说说Chrome和FF的问题: 对于FLash,IE是认object标签的,但是FF和Chrome是认embed标签的,所以这个很重要,如果在调试的时候,发现firebug等工具提示"...... is not a Function",我们就要从以下地方查找原因: 1、addCallback是否成功注册 2、allowScriptAccess是否允许always,默认不允许 3、Flash是否完全加载完毕 一般来说,第三点是我们最容易遇到的,如果你的Flash没有加载完毕就去调用函数的话,是找不到这个函数的。 这里需要注意另外一个错误提示,就是"Error calling method on NPObject",如果出现这个错误,就要小心了: 1、安全策略问题,请参考上面所有的解决方案 2、自身函数错误










