ruffle 中文文档 下载 App

桌面版全屏显示与缩放模式详解

先搞懂:SWF 的舞台尺寸

每个 .swf 文件内部都硬编码了一个舞台尺寸(Stage Size),比如 800×600、1024×768。Flash Player 原版默认就按这个尺寸渲染。Ruffle 把窗口拖大或拉小时,默认会保持舞台比例(类似 YouTube 播放器)。

四种缩放模式

在「视图 → 缩放」里能选到四种处理方式:

模式效果什么时候用
showAll(保持比例)按最大等比缩放填满窗口,两侧留黑边默认值,画面不变形不裁切,最安全
exactFit(拉伸填充)强制填满整个窗口,可能出现画面被拉伸变形你不介意变形、只想填满屏幕
noBorder(等比裁切)等比缩放但不留黑边,超出窗口的部分直接裁掉像玩老电视全屏那样,画面可能被切了一点
noScale(原始尺寸)严格按 SWF 原始像素渲染,窗口再大也不放大要逐像素检查画面渲染问题

全屏:F11 快捷键 vs 游戏自己的全屏

Ruffle 有两种全屏路径:

  1. Ruffle 窗口全屏:按 F11,整个 Ruffle 窗口铺满屏幕,SWF 画面按当前缩放模式拉伸。这个全屏是 Ruffle 层面的,不会影响 SWF 内部逻辑
  2. SWF 自己的全屏:某些 Flash 游戏里点右键菜单会有「Enter Fullscreen」或游戏里按钮触发。这是通过 ActionScript 的 Stage.displayState = StageDisplayState.FULL_SCREEN 来实现的。Ruffle 会模拟这个调用——但因为浏览器安全策略,在扩展 / Web 版里需要用户先点一下画布才能切换成功,桌面版不受这个限制

常见坑

画面两侧出现黑边 / 空白素材

有些 SWF 把辅助素材(按钮、调试 UI)放在舞台尺寸之外的坐标(负坐标、或超过 stage 宽度)。showAll 模式下这些东西会被显示出来,看起来像黑边里多了一堆乱的图形。解决办法:

窗口太小看不清

默认窗口可能只有 800×600。两种办法:

游戏里的鼠标坐标错位

如果你强制改了窗口尺寸又用了 exactFit 拉伸,某些老游戏内部读取鼠标坐标时可能会错位。这是因为游戏内部认为窗口还是原始 stage size,但 Ruffle 窗口已经变形了。解决办法:用 showAll 或 noBorder,别用 exactFit。

窗口特别大 / 4K 屏上画面模糊

Ruffle 桌面版默认用硬件加速。如果你在 4K 显示器上发现画面模糊,可以在「Ruffle 参数设置 → 图形处理」里切到 CPU 纯软件渲染试一下——软件渲染用更高精度的光栅化,画面会清晰一些,但帧率会掉。