Flash停用后,如何修改现有SWF文件为local-with-filesystem权限以加载本地XML实现本地播放?
解决SWF本地加载XML的Error #2148问题
我之前处理过不少Flash归档的需求,针对你遇到的Error #2148,这里有几个实用的解决方案:
方案一:修改SWF的本地安全权限标记
如果没有原始工程文件,你可以用Flash反编译工具修改SWF的安全沙箱设置,具体用FFdec(免费开源的Flash反编译器)操作:
- 下载并打开FFdec,导入你的SWF文件
- 点击顶部菜单栏的「编辑」→「SWF属性」
- 在弹出的窗口里,找到「本地播放安全性」选项,选择「只访问本地文件系统」
- 保存修改后的SWF文件,再用本地Flash播放器打开,应该就能正常加载同目录的XML了
注意:如果你的SWF是加密过的,可能需要先解密才能修改,不过大部分普通SWF都能直接操作。记得备份原文件,避免修改出错。
方案二:用本地临时服务器运行
Flash的网络沙箱允许加载同域名的资源,你可以把SWF和XML放到本地服务器环境中运行:
- 打开命令行,进入SWF和XML所在的文件夹
- 运行简易服务器命令:
- Python 3:
python -m http.server 8000 - Python 2:
python -m SimpleHTTPServer 8000
- Python 3:
- 用支持Flash的独立播放器(比如旧版的Adobe Flash Player Projector)访问
http://localhost:8000/your_swf_file.swf,这样SWF就能正常加载同目录的XML了
方案三:使用Ruffle开源模拟器
这是现在最推荐的Flash归档方案,Ruffle是专门的开源Flash模拟器,不需要依赖官方Flash Player,还能自动处理本地资源加载:
- 下载Ruffle的桌面版(支持Windows、Mac、Linux)
- 直接将你的SWF文件拖入Ruffle窗口,它会自动加载同目录下的XML配置文件,不需要修改任何设置
- Ruffle还支持将SWF转成HTML5格式,方便长期归档保存
内容的提问来源于stack exchange,提问作者Jill Nesbit




