Skip to content
SFML.js

示例 ​

所有命令在仓库根目录执行。首次运行先 npm ci;修改源码后执行 npm run build。图形示例需要可用的显示服务和 OpenGL 上下文。

项目首页 · 快速开始 · 开发指南

从这里开始 ​

sh
node examples/breakout.cjs
node examples/all-types.cjs --frames=120
node examples/render-texture.cjs --frames=120
node examples/network.cjs

已构建时直接运行脚本;npm run demo:* 会按 package.json 重新构建。图形入口支持的帧数、字体等参数以各脚本为准。

玩一局打砖块 ​

在原生窗口中渲染的打砖块游戏

breakout.cjs 包含砖块碰撞、三条生命、计分与胜负状态。方向键左/右或 A/D 移动挡板,Space 发球或重新开始,P 暂停,Esc 退出。交互模式下失去焦点会暂停。

npm run demo:breakout 构建并启动游戏。macOS/Linux 可用以下命令复现游戏截图:

sh
SFML_DEMO_SNAPSHOT=/tmp/sfml-breakout.png \
  node examples/breakout.cjs --autoplay --frames=900

截图保存最后一帧的真实原生画面。--autoplay 自动控制挡板,--frames 限制运行帧数。node examples/breakout.cjs --self-test 无需打开窗口即可检查游戏逻辑。

图形与窗口 ​

文件演示内容npm 命令
all-types.cjs值类型、变换、形状、顶点与文字的综合场景demo:types
sprites.cjs大量精灵绘制demo
image.cjs像素编辑、复制、遮罩与编解码demo:image
texture.cjs图片加载、裁剪、局部上传与采样demo:texture
sprite.cjs精灵动画、翻转、颜色与边界demo:sprite
render-texture.cjs离屏合成、纹理视图与绘制快照demo:render-texture
drawable.cjs自定义组合、父子变换、混合与模板demo:drawable
vertex-array.cjs动态瓦片与连续顶点demo:vertices
text.cjs文字排版与顶点动画demo:text
window.cjs窗口事件、光标和输入诊断demo:window
system-window.cjsSystem 与 Window 接口demo:system-window

大多数持续渲染示例可通过 Esc 退出,传入 --frames=120 可限制运行时长。text 示例使用 --font=/path/to/font.ttf 和 --text=中文示例 指定字体与文字;中文需要对应字形。

部分诊断示例使用仓库内部预览和验证辅助函数。应用入门请复制 快速开始 中仅使用公开接口的窗口代码。

音频与网络 ​

文件演示内容
audio.cjsSound、Music、Worker 供数、音效与录音回放
audio-worker.cjstone 与 filter Worker 工厂,由音频示例加载
network.cjs本机 TCP、Packet、UDP、Selector
sleep-err.cjs异步等待与 SFML 日志输出
vector-scalars.cjs不同数值标量的向量运算

audio 示例中,1~4 切换模式,Space 播放/暂停,S 停止,E 切换音效,R/T 开始/结束录音,方向键调整声像和音量。录音会使用系统麦克风;普通启动等待按键。

截图 ​

支持 SFML_DEMO_SNAPSHOT 的图形示例可保存运行画面。例如在 macOS/Linux:

sh
SFML_DEMO_SNAPSHOT=/tmp/sfml-render-texture.png \
  node examples/render-texture.cjs --frames=2

PowerShell:

powershell
$env:SFML_DEMO_SNAPSHOT = "$env:TEMP/sfml-render-texture.png"
node examples/render-texture.cjs --frames=2
Remove-Item Env:SFML_DEMO_SNAPSHOT

综合 all-types 示例保存 PPM,其他示例按各自入口实现保存格式。静态截图仅证明指定场景的渲染结果,不代表吞吐、声音输出或输入设备测试。

旧版示例 ​

ported/ 保留原有 16 个脚本:14 个使用当前 API 运行,2 个依赖旧异步绘制接口并报告不支持。

sh
npm run test:ported

all-types-scene.cjs 与 bitmap-label.cjs 是演示辅助文件,不是独立应用入口。

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