1个不稳定版本

使用旧的Rust 2015

0.0.1 2018年5月25日

#26#键盘事件

MIT 许可证

39KB
784

wasm-rgame

使用WASM构建浏览器游戏的Rust框架。

此框架受到Game of Life Rust + WASM教程的启发。您可以直接开始编写wasm-rgame应用程序![教程](TODO 链接教程)!

工作原理

此框架抽象掉了自定义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