已知 Ruffle 还不支持的 Flash 特性清单
说明
这份清单基于 ruffle.rs/compatibility 页面和 GitHub Issue Tracker 在 2026 年 10 月的最新数据。Ruffle 每周都有新提交,某些缺项可能在 nightly 版本里已经修了但还没进稳定版。跑之前可以下载 nightly 先试一下。
AVM 1 已知不支持(相对少)
| 特性 | 影响 | 现状 |
|---|---|---|
eval() 与某些动态代码执行 | 少数老 Flash 游戏会用 | 大部分 case 已实现,边界 case 还在修 |
TextFormat.font 中非系统字体 | 自定义字体渲染 | Ruffle 用浏览器字体,TTF/OTF embed 还在做 |
某些冷门 flash.net API | 网络请求 | 已实现常用的 URLRequest / URLLoader |
attachVideo() 摄像头接入 | 老 Flash 摄像头应用 | Ruffle 还没实现摄像头/麦克风接入 |
AVM 2 已知不支持(相对多)
| 特性 | 影响 | 替代方案 |
|---|---|---|
| RTMP 流媒体 | 在线 Flash 游戏的视频/音频流(经典例子是 Kongregate 的一些游戏) | Flashpoint 或旧 Flash Player |
| 原始 TCP/UDP Socket | flash.net.Socket / DatagramSocket | 无,只能等 Ruffle 实现 |
| FTE(Flash Text Engine) 高级排版 | 精确的双向文字、竖排、复杂字符形 | 简单文本够用,复杂排版等 PR |
| Loader.loadBytes() 动态加载 SWF | 某些游戏用它做插件系统 | 等 nightly 跟进 |
| Adobe AIR 特性(文件系统、原生窗口、移动 API) | AIR 应用 | Ruffle 完全不覆盖 AIR,用 AIR SDK 或 Flashpoint |
| 3D Stage3D 高级特性 | Context3D 的高级着色器(AGAL) | 基础 Stage3D 能跑,复杂着色器游戏不行 |
| Pixel Bender 2 | Flash 的着色器语言 | 还没实现,用了这个的 SWF 会报错 |
| Camera / Microphone 接入 | Flash 摄像头 / 麦克风应用 | 用现代浏览器的 getUserMedia API 自己写 |
| LocalConnection | 多个 SWF 之间通信 | 用 JS 作为中间桥接 |
| Domain Memory(共享内存) | 跨 SWF 大对象共享 | 还没实现 |
跨 AVM 都有的限制
- 文件系统访问:Ruffle 运行在浏览器沙箱里,Flash 的
FileReference(本地文件打开保存)在 Web 版完全不能用;桌面版有部分支持(取决于沙箱边界配置) - 本地安全策略文件(crossdomain.xml 以外的):某些 Flash 应用会读
Security.as3或自定义 policy 文件,Ruffle 还没完整实现 - SWF 内部直接访问网络 Socket:现代浏览器 CORS 拦着,Ruffle Web 版也会受限
怎么快速判断某个 SWF 会不会跑
在花时间排查之前,先用最简单的步骤试:
- 拖进 Ruffle 桌面版 → 能跑就完事了
- 如果白屏 / 报错 → 加
--verbose看日志 - 如果日志里出现
Unimplemented ...→ 对照上面的表和 GitHub Issue Tracker - 如果只是跑不起来、没有
Unimplemented字样 → 可能是别的原因(CORS、HTTPS、自动播放策略等),翻「常见问题排查」分组