easy-scratch/doc/scratch-vm.md

126 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[scratch-vm](https://github.com/LLK/scratch-vm)
[官方文档搬运](./scratch-vm/index.html)
## 主要功能
+ 侦听scratch-blocks发出的事件来构造和维护[抽象语法树](https://en.wikipedia.org/wiki/Abstract_syntax_tree)的状态。
+ 加载解析项目解析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包下
例:
```js
//按下按键
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
解绑事件