Flash Builder编译的swf为什么在bin-debug下运行正常,复制到其他文件夹就不正常?
相信用Flash Builder/Flex Builder做开发的大部分开发者都遇到过这样的问题,编译的swf在bin-debug中打开(不是在IDE环境中调试,而是直接双击用Flash Player打开),一切正常;而将其复制到其他文件夹,就会弹出安全错误。这是由于Flash Player对本地回放安全性的限制。详情可看官方文档中的“权限控制”部分。不想看官方文档的,继续往下看。
解决这问题的方法主要是以下两种:
一、使用本地信任文件
在Windows XP操作系统中,当前用户的本地信任文件路径为:
C:\Documents and Settings\[你的用户名]\Application
Data\Macromedia\Flash Player\#Security\FlashPlayerTrust
全局的信任文件路径为:
C:\windows\system32\Macromed\Flash\FlashPlayerTrust
在这个文件夹中新建一个纯文本文件,文件名使用英文,扩展名为cfg,其中的内容就是你要信任的swf文件所在的本地路径,每行一个路径即可。
例如,在我的信任路径中,已经被FlashBuilder自动建立了一个名为flashbuilder_plugin.cfg的本地信任文件列表,自动添加了当前所有项目的bin-debug目录,其部分内容为:
C:\Documents and Settings\Administrator\Adobe Flash Builder 4 Plug-in
E:\works\kaitian\demo\TestNullFun\bin-debug
E:\works\kaitian\demo\TestPost\bin-debug
E:\works\kaitian\demo\Vector\bin-debug
E:\works\zrong.googlecode.com\bin
由于默认这些目录已经存在于信任文件中,因此是被信任的,这样在bin-debug下直接打开swf文件,没有权限限制。而如果复制到其他文件夹,而那个文件夹并不在被信任的目录中,就会有权限的限制,从而出现安全错误。
也可以使用设置管理器来做这件事:http://www.adobe.com/go/settingsmanager_cn。
这里还有一篇比较老的文章讲的也很详细。
二、编译的时候指定本地回放安全性
如果swf在运行中载入了外部文件,那么这个swf在单独运行的时候,如果不处于信任目录中,就会显示安全错误(前提是使用的Debug版的Flash Player),无法载入外部的文件。
有时候我们在网上下载一些swf小游戏,同时也将这些小游戏需要的资源一同下载并且放在正确的文件夹中,但却仍然出现安全错误,就是这个原因。这种情况下,只需要在本地搭建Web服务器,将要运行的swf放在web环境中运行即可解决。
如果制作的swf只会在本地运行,不妨将它的回放安全性设定为“只访问本地文件”,这样无论是否在信任目录中,都可以载入本地的外部文件了。在Flash中可以通过“发布设置”进行设定:
在Flash Builder/Flex Builder中,可以使用编译参数-use-network=false实现,如下图:
- 文章ID:1206
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/1206/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。