1个不稳定版本
使用旧的Rust 2015
0.0.1 | 2018年5月25日 |
---|
#26 在 #键盘事件
39KB
784 行
wasm-rgame
使用WASM构建浏览器游戏的Rust框架。
此框架受到Game of Life Rust + WASM教程的启发。您可以直接开始编写wasm-rgame应用程序!
工作原理
此框架抽象掉了自定义HTML/JavaScript的编写,并提供了与wasm-rgame-js仓库中捆绑的JavaScript交互的Rust类型。
Rust API提供以下类型的接口
- 键盘事件
- 鼠标位置和事件
- 将渲染API渲染到2D画布
- 在应用程序中生成新对象
此外,还提供了一个构建工具(wasm-rgame-tools),该工具构建项目(针对wasm32-unknown-unknown),运行wasm-bindgen,并将生成的WASM二进制文件和JavaScript/HTML捆绑在一起。
目标
该项目主要是实验性的,但已用于创建非平凡的应用程序(请参阅wrg-snake)。
- 用户只需编写Rust。
- Rust / JavaScript之间的调用最少。
示例API使用
这些示例取自wrg-snake。请注意,这些示例不能独立运行,因为它们需要JavaScript/HTML框架。
渲染透明叠加层
use wasm_rgame::{Delegate, Graphics};
impl Delegate for MyObject {
fn tick(..) {}
fn render(&self, graphics: &mut Graphics) {
// draw a transparent overlay over the game
graphics.draw_rect(
0.0,
0.0,
CANVAS.width() as f32,
CANVAS.height() as f32,
[255, 255, 255, 150]
);
}
}
检查键盘输入
use wasm_rgame::{KeyManager, key_codes};
pub fn store_direction_change(&mut self, key_manager: &KeyManager) {
// Don't let direction change if already going opposite direction
let wanted_direction = if key_manager.key_down(key_codes::W) {
Direction::Up
} else if key_manager.key_down(key_codes::D) {
Direction::Right
} else if key_manager.key_down(key_codes::S) {
Direction::Down
} else if key_manager.key_down(key_codes::A) {
Direction::Left
} else {
return;
};
...
}
如何开始
阅读[教程](TODO 教程)并开始编写自己的wasm-rgame应用程序!
依赖关系
~82KB