Skip to content

Latest commit

 

History

History
125 lines (84 loc) · 2.82 KB

scratch-vm.md

File metadata and controls

125 lines (84 loc) · 2.82 KB

scratch-vm

官方文档搬运

主要功能

  • 侦听scratch-blocks发出的事件来构造和维护抽象语法树的状态。
  • 加载解析项目:解析sb2和sb3项目文件,生成积木和角色等
  • 导出项目:将当前项目资源打包压缩成 .sb3 文件或者生成json格式
  • 运行项目并将结果渲染至舞台
  • 扩展管理

编译

yarn install

yarn run build

在国内可能会因网络问题编译失败,如果有条件可以开全局代理,或者干脆在国外的服务器上编译

项目解析

├── dist                     # 编译后的文件夹
│   ├── node                 # 用在node.js
│   ├── web                  # 用在web
├── playground               # 几个vm使用案例和文档
├── docs                     # 拓展帮助文档
├── src
│   ├── blocks               # 对几种积木功能的定义
│   ├── extension-support    # 拓展支持
│   ├── extensions           # 内置拓展
│   ├── utils                # 常用工具类
│   ├── dispatch             # 消息调度
│   ├── playground           # 几个vm使用案例
│   ├── engine               # vm核心引擎
│   ├── import               # 载入素材
│   ├── io                   # 处理IO事件
│   ├── serialization        # 解析sb2和sb3文件
│   ├── sprites              # 角色操作
├── test                     # 测试用例
├── README.md
└── package.json
└── webpack.consig.js

常用方法

toJSON 获取JSON格式的项目

返回:{String} JSON格式的项目

saveProjectSb3 获取SB3格式项目

返回:{Promise} zip格式的项目

loadProject 加载SB3项目

参数:{string | object}

返回:{Promise}

greenFlag

点击小绿旗

stopAll 停止项目运行

setTurboMode 设置为加速模式

参数:{Boolean}

clear 清除当前项目数据

addSprite 添加角色

参数:{String|Object}

返回:{Promise}

postIODate 向vm发送I/O数据

类型:Clock、Cloud、Keyboard、Mouse、MouseWheel、UserData、Video

相关定义在src/io包下

例:

//按下按键
vm.postIOData("keyboard", {
    keyCode: keyCode,
    key: key,
    isDown: true,
});
//松开按键
vm.postIOData("keyboard", {
    keyCode: keyCode,
    key: key,
    isDown: false,
});
//鼠标移动
vm.postIOData('mouseWheel', {
    deltaX: e.deltaX,
    deltaY: e.deltaY
})
//向vm发送用户信息,向vm推送云变量
vm.postIOData('userData', {username: this.props.username});

addListener

监听事件,如:

  • workspaceUpdate
  • EXTENSION_ADDED

removeListener

解绑事件