最近搞了下 Flash 的 Action Script,水挺深的,完全外行。
遇到一个跨域的问题,域名 front.com 调用 static.net 上面的 flash.swf,由于权限问题导致 Flash 提供的方法不能被 Javascript 调用。
问了一个专门搞 Flash 的“专家”,看了下我调用的代码,抓耳挠腮搞了半天没搞明白,最后给了个结论:你不能引用 dev.cn 上面的 flash.swf,因为跨域,改成 static.net 域名的就好了。
邪了门了!我问:那不一样还是跨域么,dev.cn 跟 static.net 都是跨域,有区别吗?
那 2B 回答道:static.net 都有问题,dev.cn 就更有问题了!
我 TMD 晕死算了!心说怎么碰上你这么个 SB!不会就说不知道,还能少耽误我点时间。装了半天孙子,给出这么一个 SB 结论!
背景资料,我虽然不会开发 Flash,但也知道有 crossdomain.xml 这么个配置文件。我已经用 md5 验证过 dev.cn 和 static.net 都包含此文件且内容严格一致!
后来还是另一位自称“初学者”的兄弟帮我找到了问题,还教了我很多查问题的方法。
比如,在 Firefox 上装一个 FlashBug 插件,再下载一个 Flash Debug Player 10,安装完成后重启 Firefox,就可以输出 Flash 的 trace 信息。
在开发 Flash 的时候,在关键点用 try catch 和 trace 可以确定问题。
果不其然,通过日志发现 ExternalInterface 未定义,然后再看 fla 文件的属性,原来是 version 设置成 Flash Player 6 了,改成 8,再编译,问题立刻消失!
现在心情不错,不仅解决了问题,还学到了解决问题的方法,哈哈~~