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,並希望保持這種狀態!請考慮捐款以支持我們持續的工程、設計、社區和資源開發工作。任何規模的捐款均受到讚賞。謝謝你!