Scratch3自定義積木塊之新增積木塊

在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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章