ruffle 中文文档 下载 App

基础 JavaScript API:createPlayer() 和 load()

什么时候用 JS API

先检查 Ruffle 有没有加载好

在调用任何 API 之前先确认:

if (window.RufflePlayer && window.RufflePlayer.newest) {
  // Ruffle 加载好了
} else {
  console.error("Ruffle 脚本还没加载完!");
}

如果你的脚本在 <script src="ruffle.js"> 之前执行,Ruffle 肯定还没好——要么把 JS 代码移到后面,要么用 DOMContentLoaded / window.onload 包一下。

第一步:获取 Ruffle 构造器

const ruffle = window.RufflePlayer.newest();

newest() 返回当前页面里已加载的最新版本构造器——扩展和网站嵌入脚本可能同时存在,newest() 会选版本号更高那个。

如果你就是想看当前脚本自己的版本,也可以:

const ruffle = window.RufflePlayer.current();

第二步:创建 Player 实例

最简单的形式:

const player = ruffle.createPlayer();

创建出来的 player 只是一个空壳,还没放到 DOM 里。你需要:

const container = document.getElementById("my-flash-container");
container.appendChild(player);

这时候 <div id="my-flash-container"> 里就多了一个 Ruffle 播放器元素。

第三步:加载 SWF

player.load("https://example.org/game.swf");

load() 是异步的——立刻返回,加载在后台进行。你可以等事件:

player.addEventListener("loadedmetadata", () => {
  console.log("SWF 元数据加载好了,舞台尺寸:", player.stageWidth, "x", player.stageHeight);
});
player.addEventListener("play", () => {
  console.log("开始播放了");
});
player.addEventListener("error", (e) => {
  console.error("加载失败:", e.error);
});

完整最小示例

<div id="flash-container" style="width: 800px; height: 600px;"></div>

<script>
document.addEventListener("DOMContentLoaded", () => {
  if (!window.RufflePlayer) {
    console.error("Ruffle 脚本未加载");
    return;
  }
  const container = document.getElementById("flash-container");
  const player = window.RufflePlayer.newest().createPlayer();
  container.appendChild(player);
  player.addEventListener("error", (e) => console.error(e));
  player.load("https://example.org/game.swf");
});
</script>

<script src="https://unpkg.com/@ruffle-rs/ruffle"></script>

常用事件

事件触发时机参数
loadedmetadataSWF 元数据(舞台尺寸、帧率)解析完—
play开始播放—
pause暂停—
stop停止—
ended播放到末尾—
enterfullscreen / exitfullscreen进出全屏—
error加载或运行出错e.error 是错误对象
volumechange音量变化—

常用 Player 方法

方法作用
player.load(url)加载并播放 SWF
player.pause()暂停
player.play()继续
player.stop()停止
player.seek(time)跳转到指定时间(毫秒)
player.setVolume(v)设置音量 0~1
player.setFullscreen(true/false)切换全屏
player.destroy()销毁播放器实例、释放资源