詳解scratch3.0二次開發(fā)之scratch-blocks中的blocks的類型、定義和使用方法
scratch-blocks是scratch-gui依賴的一個基本模塊。它的作用是生成gui界面上的blocks。(有關scratch-blocks的方法可以看我上一篇博客《scratch3.0二次開發(fā)之scratch-blocks的免編譯修改方法》)。blocks的作用是通過拖曳的方法組成blocks堆塊,點擊greenflag控件,舞臺區(qū)(stage)會有相應的變化。

scratch-gui的blocks的生成文件在scratch-blocks\blocks_vertical里。
blocks幾種形狀
blocks塊的形狀有以下幾種:
| 塊 | 形狀名稱 |
|---|---|
![]() |
shape_statement |
![]() |
shape_hat |
![]() |
shape_end |
![]() |
shape_statement |
![]() |
output_boolean |
![]() |
output_number |
![]() |
output_string |
一個blocks塊的定義
比如一個右轉(zhuǎn)多少度的塊

定義塊的代碼:
Blockly.Blocks['motion_turnright'] = {
/**
* Block to turn right.
* @this Blockly.Block
*/
init: function() {
this.jsonInit({
"message0": “右轉(zhuǎn) %1 %2 度”,
"args0": [
{
"type": "field_image",
"src": Blockly.mainWorkspace.options.pathToMedia + "rotate-right.svg",
"width": 24,
"height": 24
},
{
"type": "input_value",
"name": "DEGREES"
}
],
"category": Blockly.Categories.motion,//塊歸屬的類,這里是運動類。
"extensions": ["colours_motion", "shape_statement"]
});
}
};
“message0“:表示塊里顯示的字符串,%1,%2表示塊里的字段field,塊里有1個field是%1,有兩個field是按先后順序設為%1,%2,以此類推,
”args0”:里面的數(shù)組元素對應上面設置的field,args0[0]對應%1,args0[1]對應%2,…。每個元素對象表示設置了的field的類型。

“extensions”:"colours_motion"設置塊的顏色,"shape_statement"設置了塊的形狀;
blocks塊的使用
定義好的block塊,使用的時候要把加到xml文件里,文件地址:scratch-gui\src\lib\make-toolbox-xml.js,找到對應的類,這里是motion.
<block type="motion_turnright">
<value name="DEGREES">
<shadow type="math_number">
<field name="NUM">15</field>
</shadow>
</value>
</block>
motion_turnright 這是剛定義好的塊。value 標簽中的name,表示變量名,在scratch-vm里面會用到,shadow標簽這段表示預先設置的值,也是預先設置的塊。去掉value這段代碼
<block type="motion_turnright"> </block>
它顯示成這樣:

scratch-blocks的編譯
scratch-blocks修改后的文件,只有編譯壓縮后才能生效。但是按照官方的方法,windows下很難編譯成功。如果是定義blocks塊,可以參考上篇博客里介紹的方法《scratch3.0二次開發(fā)之scratch-blocks的免編譯修改方法》
補充
下面看下scratch3.0二次開發(fā)之blocks生成代碼思路
總的思路:
- 引入一個生成代碼的文件,比如要生成arduino代碼,就要引入生成arduino代碼的文件,要生成python代碼,就要引入python文件。
- 如果scratch-block中沒有自己要的blocks塊,就定義一個blocks塊用來生成代碼。(生成的方法可以看我之前的文章《[scratch3.0二次開發(fā)之scratch-blocks中的blocks的類型、定義和使用方法])》
- 給每個blocks定義要生成的代碼。
- 把生成代碼的代碼blocks塊加入make-toolbox-xml 中。
- 在gui中設置一個代碼編輯區(qū),用來顯示生成的代碼。
到此這篇關于scratch3.0二次開發(fā)之scratch-blocks的免編譯修改方法的文章就介紹到這了,更多相關scratch blocks的免編譯內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
HTTP協(xié)議詳解_動力節(jié)點Java學院整理
這篇文章主要介紹了HTTP協(xié)議詳解,超文本傳輸協(xié)議(HTTP)是一種通信協(xié)議,它允許將超文本標記語言(HTML)文檔從Web服務器傳送到客戶端的瀏覽器2017-07-07
重裝win10系統(tǒng)超詳細的圖文教程(適用所有windows系統(tǒng))
這篇文章主要介紹了重裝win10系統(tǒng)超詳細的圖文教程(適用所有windows系統(tǒng)),非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-11-11
Scala 環(huán)境搭建及IDEA工具的配置使用教程
這篇文章主要介紹了Scala 之 環(huán)境搭建 及 工具IDEA的配置使用,本文通過實例圖文相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06
Websocket直播間聊天室教程 GoEasy快速實現(xiàn)聊天室
這篇文章主要介紹了Websocket直播間聊天室教程 GoEasy快速實現(xiàn)聊天室,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05
TCP協(xié)議詳解_動力節(jié)點Java學院整理
本文描述了TCP協(xié)議,首先簡單介紹了TCP完成了一些什么功能;介紹了TCP報文格式,以及典型報文的數(shù)據(jù)格式。現(xiàn)在通過本文給大家詳細介紹,感興趣的的朋友一起看看吧2017-07-07








