在Scratch3.0的二次開發中,新功能的研發和擴展離不開積木塊的添加,這篇主要講解Scratch3.0中新增積木塊部分
Scratch3.0中對於新增積木塊有兩種方式:
1. 初始化積木塊方式
在scratch3.0界面默認打開時展現出的積木塊(如運動、外觀、聲音、事件等)
2. 拓展方式
通過添加拓展實現新的功能和積木塊的添加(如官方默認的畫筆、microbit等拓展功能)
這篇會講解第一種方式的添加方式,第二種方式請關注後續文章。
Scratch-blocks: Scratch Blocks是基於谷歌的Blockly實現的基於文本和圖形格式編程的框架,Blockly主要的工作在於積木定義及代碼轉換,不過在Scratch Blocks對於Blockly的部門功能做了精簡,如Blockly中的代碼轉換功能,這部分內容會在後續的硬件通訊和燒錄中詳述。第一種方式實現主要工作就在Scratch-blocks中。
blocks_common: 一些積木塊中通用類型控件的定義,如積木中用到的顏色選擇器
blocks_horizontal: 橫向佈局的積木定義,如scratchjr、lego wedo相關的app佈局 - 主要針對的是積木塊的佈局定義
blocks_vertical: 豎向佈局的積木定義,當前scratch3默認的佈局方式
積木的定義在scratch-blocks下的blocks_vertical目錄,以運動 -> 移動 積木爲例
一個定義積木的結構:
message0: 積木塊的文本定義,這塊採用了多語言庫scratch-l10n,對於不同語言的定義在此庫中進行添加
args: 積木參數的定義。在積木文本中通過換位符進行定義 %1 - args0, %2 - args1 。。。。。
參數類型定義根據不同需求,如下拉列表、文本框、顏色選擇器等,可根據不同的現有積木進行參考。
Scratch-blocks編譯:
參考官方上的編譯步驟進行操作
注:scratch-blocks在windows下由於文件長度限制編譯會失敗,需要在liunx等其他平臺下進行編譯。
設置GUI展示新增的積木:
需要在gui中的默認toolbox xml定義中加入新增加的積木塊項
具體路徑:scratch-gui/src/lib/make-toolbox-xml.js
Scratch3仍處於官方修復階段,二次開發甚至官方說明比較少,對於二次開發的先行者在使用和開發的過程中會遇到種種問題!
歡迎志同道合者多多溝通、相互交流!
QQ羣:452783077 - Scratch3.0二次開發交流羣
個人QQ:438759715