scratch vm
v4.8.100
这需要您安装 Git 和 Node.js。
要安装为您自己的应用程序的依赖项:
npm install scratch-vm
要设置开发环境来自行编辑scratch-vm:
git clone https://github.com/scratchfoundation/scratch-vm.git
cd scratch-vm
npm install
这需要安装 Node.js。
为了方便起见,我们在虚拟机中包含了一个开发服务器。当在加载远程资源(例如,来自 Scratch 服务器的 SVG)的环境中运行时,这有时很有用。如果您想将修改后的 VM 与完整的 Scratch 3.0 GUI 一起使用,请按照说明将 VM 链接到 GUI。
在存储库中打开命令提示符或终端并运行:
npm start
要查看 Playground,请确保开发服务器正在运行并访问 http://localhost:8073/playground/ - 您将被定向到 Playground,其中演示了各种工具和内部状态。
npm run build
< script src =" /path/to/dist/web/scratch-vm.js " > </ script >
< script >
var vm = new window . VirtualMachine ( ) ;
// do things
</ script >
有关扩展设置示例,请查看 /src/playground 目录,其中包括完全运行的 VM 实例。
var VirtualMachine = require ( 'scratch-vm' ) ;
var vm = new VirtualMachine ( ) ;
// Block events
Scratch . workspace . addChangeListener ( vm . blockListener ) ;
// Run threads
vm . start ( ) ;
虚拟机通过blockListener
监听暂存块工作区发出的事件来构建和维护抽象语法树 (AST) 的状态。每个目标(代码运行对象,例如精灵)为其块保留一个 AST。任何时候,都可以通过检查vm.runtime.targets[...].blocks
对象来查看 AST 的当前状态。
VM 的块表示包含执行和存储的所有重要信息。下面是一个表示工作区上“按下按键时”脚本的示例:
{
"_blocks" : {
"Q]PK~yJ@BTV8Y~FfISeo" : {
"id" : " Q]PK~yJ@BTV8Y~FfISeo " ,
"opcode" : " event_whenkeypressed " ,
"inputs" : {
},
"fields" : {
"KEY_OPTION" : {
"name" : " KEY_OPTION " ,
"value" : " space "
}
},
"next" : null ,
"topLevel" : true ,
"parent" : null ,
"shadow" : false ,
"x" : -69.333333333333 ,
"y" : 174
}
},
"_scripts" : [
" Q]PK~yJ@BTV8Y~FfISeo "
]
}
npm test
npm run coverage
npm run deploy
这会将当前构建的 Playground 推送到当前跟踪的遥控器的 gh-pages 分支。如果您想更改推送到的位置,请添加 repo url 参数:
npm run deploy -- -r < your repo url >
我们免费提供 Scratch,并希望保持这种状态!请考虑捐款以支持我们持续的工程、设计、社区和资源开发工作。任何规模的捐款均受到赞赏。谢谢你!