Skip to content
SFML.js

Simple and Fast Multimedia Library

SFML for Node.js

SFML 的 Node.js 绑定。用 JavaScript 或 TypeScript 创建原生窗口、绘制二维图形、播放音频。

npm install sfml.js

macOS / Windows / Linux

基于 SFML 3.1 · 了解 SFML

SFML 的五个模块

打开窗口、绘制精灵、播放音乐、收发数据。SFML 提供构建桌面应用所需的基础能力。

模块指南

创建第一个 SFML 窗口。

创建 RenderWindow,绘制 CircleShape,再显示这一帧。SFML 负责窗口与渲染,JavaScript 驱动循环。包内附带 TypeScript 类型声明。

安装与运行指南

在桌面图形环境中运行。按 Esc 关闭窗口;setImmediate 为帧间的 Node.js I/O 留出执行机会。

JS hello.cjsnode hello.cjs
const sf = require('sfml.js');
const win = new sf.RenderWindow(
  new sf.VideoMode(new sf.Vector2u(800, 600)),
  'Hello, sfml.js',
);
const circle = new sf.CircleShape({ radius: 80 });
circle.setPosition(new sf.Vector2f(320, 220));
circle.setFillColor(new sf.Color(108, 190, 82));
win.setFramerateLimit(60);

function frame() {
  win.handleEvents({
    Closed: () => win.close(),
    KeyPressed: e => {
      if (e.code === sf.Keyboard.Key.Escape) win.close();
    },
  });
  if (!win.isOpen()) return;
  win.clear(new sf.Color(24, 28, 32));
  win.draw(circle);
  win.display();
  setImmediate(frame);
}
frame();

SFML 运行实例

运行图形、文字、着色器、音频录制与网络通信示例。

浏览全部示例
正在运行的 sfml.js 打砖块游戏,包含绿色与橙色砖块、小球和挡板。
breakout.cjsSFML 实际运行画面

打砖块

用 SFML 图形绘制打砖块,键盘输入与游戏循环运行在 Node.js 中。

查看源码
SFML 原生渲染纹理示例,展示彩色图形与纹理快照。
render-texture.cjsSFML 实际运行画面

把画面绘制到纹理。

将 SFML 的 RenderTexture 作为离屏目标,再通过 Sprite 显示结果。这个运行实例展示了纹理合成与绘制状态快照。

查看源码

从 SFML 到 JavaScript。

结合 SFML C++ 文档与绑定的类型参考阅读。本站指南说明 Promise、共享类型化数组、资源生命周期与 Node.js 中的批量渲染。

Icons made by Lorc, Delapouite & Skoll · game-icons.net · CC BY 3.0