首頁>技術>

說明:

2. blockly工具箱支援xml和json兩種方式定義,本文使用xml演示,json方式建立工具箱可參考google官網文件https://developers.google.cn/blockly/guides/configure/web/toolbox。

建立分組的工具箱

工具箱就是可供使用者使用的程式碼塊,預設顯示在工作區的左側,如果程式碼塊較多的話最好能分類組織,工具箱的程式碼透過在index.html中id為toolbox的xml程式碼進行定義,blcokly會解析xml並注入到頁面圖形化的工具箱程式碼DOM,如下圖的工具箱包含了控制、邏輯兩個類別。

對應的xml定義程式碼如下,其中category定義了一個分類,block定義了程式碼塊,type指定的類別都是blockly預設提供的,定義程式碼在./blockly/blocks目錄下

<xml id="toolbox" style="display: none">    <category name="控制">      <block type="controls_if"></block>      <block type="controls_whileUntil"></block>      <block type="controls_for">    </category>    <category name="邏輯">      <block type="logic_compare"></block>      <block type="logic_operation"></block>      <block type="logic_boolean"></block>    </category>  </xml>

工具箱還可以多層巢狀定義,如下xml定義的工具箱效果如下:

<xml id="toolbox" style="display: none">    <category name="核心">      <category name="控制">        <block type="controls_if"></block>        <block type="controls_whileUntil"></block>      </category>      <category name="邏輯">        <block type="logic_compare"></block>        <block type="logic_operation"></block>        <block type="logic_boolean"></block>      </category>    </category>    <category name="數學">      <block type="math_constant"></block>      <category name="算術">        <block type="math_arithmetic"></block>        <block type="math_number"></block>      </category>      <category name="三角">        <block type="math_single"></block>        <block type="math_trig"></block>      </category>    </category>  </xml>
設定分組顏色

工具箱分組類別還可以指定顏色,透過colour屬性進行設定,colour值的範圍是0~360,如下xml程式碼生成的工具箱效果如下:

<xml id="toolbox" style="display: none">    <category name="邏輯" colour="20">      <block type="controls_if"></block>      <block type="controls_whileUntil"></block>      <block type="controls_for">    </category>    <category name="控制" colour="200">      <block type="logic_compare"></block>      <block type="logic_operation"></block>      <block type="logic_boolean"></block>    </category></xml>
動態類別的程式碼塊

blockly提供的工具箱中有兩類有著特殊的行為,分別是變數和函式,它們的xml定義中擁有custom屬性,分別為VARIABLE和PROCEDURE,程式碼及顯示效果如下:

<xml id="toolbox" style="display: none">    <category name="變數" custom="VARIABLE"></category>    <category name="函式" custom="PROCEDURE"></category>  </xml>

函式分組中包含三個程式碼塊,前兩個為方法定義,一個方法帶有返回值,第三個為條件返回的程式碼塊,透過這三個程式碼塊我們可以編寫新的方法來生成新的程式碼塊,如下定義一個inc方法會生成一個新的程式碼塊inc,該方法將輸入的x變數增加1並返回,新生成的程式碼塊又可以作為程式碼塊進行使用:

帶預設值的程式碼塊

有些程式碼塊希望擁有預設值,如下程式碼生成工具箱效果如下:

<xml id="toolbox" style="display: none">    <block type="logic_boolean"></block>    <block type="math_number">      <field name="NUM">42</field>    </block>    <block type="math_arithmetic">      <field name="OP">ADD</field>      <value name="A">        <shadow type="math_number">          <field name="NUM">1</field>        </shadow>      </value>      <value name="B">        <shadow type="math_number">          <field name="NUM">1</field>        </shadow>      </value>    </block>  </xml>

其中:

logic_boolean不需要事先設定,預設值為真(true);math_number透過field設定預設值42;math_arithmetic使用field、value,加上shadow blocks實現了預設值的設定。

11
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • SpringBoot 多profile根據多場景進行配置切換