Bạn có thể định cấu hình (đặt trước) trạng thái của các khối trong hộp công cụ. Ví dụ: bạn có thể đặt một trường thành giá trị mặc định hoặc kết nối 2 khối với nhau. Bạn cũng có thể tạo khối bóng, đóng vai trò là khối mặc định cho các khối con.
Ví dụ
Sau đây là một số ví dụ về các khối đặt sẵn.
Chặn bằng giá trị trường đặt sẵn
Sau đây là một khối math_number
có trường hiển thị số 42 thay vì giá trị mặc định là 0:
Và đây là một bộ công cụ đặt trường này:
JSON
{
"kind": "flyoutToolbox",
"contents": [
{
"kind": "block",
"type": "math_number",
"fields": {
"NUM": 42
}
},
]
}
XML
<xml id="toolbox" style="display: none">
<block type="math_number">
<field name="NUM">42</field>
</block>
</xml>
Khối được kết nối trước
Dưới đây là một khối controls_for
có 3 khối math_number
được kết nối với khối đó:
Và đây là một hộp công cụ kết nối trước các khối này:
JSON
{
"kind": "flyoutToolbox",
"contents": [
{
"kind": "block",
"type": "controls_for",
"inputs": {
"FROM": {
"block": {
"type": "math_number",
"fields": {
"NUM": 1
}
}
},
"TO": {
"block": {
"type": "math_number",
"fields": {
"NUM": 10
}
}
},
"BY": {
"block": {
"type": "math_number",
"fields": {
"NUM": 1
}
}
},
}
},
]
}
XML
<xml id="toolbox" style="display: none">
<block type="controls_for">
<value name="FROM">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
<value name="TO">
<block type="math_number">
<field name="NUM">10</field>
</block>
</value>
<value name="BY">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
</block>
</xml>
Khối bị vô hiệu hoá
Không thể kéo các khối bị vô hiệu hoá ra khỏi hộp công cụ. Bạn có thể tắt từng khối bằng cách sử dụng thuộc tính disabled
không bắt buộc.
JSON
{
"kind": "flyoutToolbox",
"contents": [
{
"kind": "block",
"type":"math_number"
},
{
"kind": "block",
"type": "math_arithmetic"
},
{
"kind": "block",
"type": "math_single",
"disabled": "true"
}
]
}
XML
<xml id="toolbox" style="display: none">
<block type="math_number"></block>
<block type="math_arithmetic"></block>
<block type="math_single" disabled="true"></block>
</xml>
Bạn cũng có thể tắt hoặc bật một khối theo phương thức lập trình bằng cách sử dụng setDisabledReason
.
Định cấu hình các khối
Bạn có thể định cấu hình một khối trong hộp công cụ theo bất kỳ cách nào mà bạn có thể định cấu hình khối đó trong một không gian làm việc. Ví dụ: bạn có thể đặt giá trị trường, kết nối các khối với giá trị hoặc đầu vào câu lệnh, thêm nhận xét và thu gọn hoặc tắt các khối. Điều này có thể xảy ra vì hộp công cụ sử dụng cùng một mã để định cấu hình các khối mà không gian làm việc dùng để chuyển đổi các khối đó thành chuỗi.
Điều này cũng có nghĩa là bạn có thể dễ dàng tạo cấu hình khối. Bạn chỉ cần tải khối vào một không gian làm việc, định cấu hình khối theo ý muốn và chuyển đổi khối đó thành chuỗi bằng cách chạy mã sau trong bảng điều khiển.
JSON
console.log(Blockly.serialization.workspaces.save(Blockly.getMainWorkspace()));
XML
console.log(Blockly.Xml.workspaceToDom(Blockly.getMainWorkspace()));
Sau đó, bạn có thể sao chép mã cấu hình và dán vào hộp công cụ. Hãy nhớ xoá các thuộc tính x
, y
và id
. Hộp công cụ sẽ bỏ qua các thuộc tính này.
Trường biến đổi
Bạn có thể cần chỉ định các trường biến theo cách khác khi chúng nằm trong hộp công cụ so với khi chúng được chuyển đổi tuần tự.
Cụ thể, khi các trường biến thường được chuyển đổi tuần tự thành JSON, chúng chỉ chứa mã nhận dạng của biến mà chúng đại diện, vì tên và loại của biến được chuyển đổi tuần tự riêng biệt. Tuy nhiên, hộp công cụ không chứa thông tin đó, vì vậy, thông tin đó cần được đưa trực tiếp vào trường biến.
{
"kind": "flyoutToolbox",
"content": [
{
"kind": "block",
"type": "controls_for",
"fields": {
"VAR": {
"name": "index",
"type": "Number"
}
}
}
]
}
Khối bóng
Khối bóng là khối giữ chỗ thực hiện một số chức năng:
- Chúng cho biết các giá trị mặc định cho khối mẹ.
- Các thành phần này cho phép người dùng nhập trực tiếp các giá trị mà không cần tìm nạp khối số hoặc chuỗi.
- Không giống như một khối thông thường, các khối này sẽ được thay thế nếu người dùng thả một khối lên trên chúng.
- Chúng thông báo cho người dùng về loại giá trị dự kiến.
Để tạo một khối bóng, hãy sử dụng thuộc tính shadow
(JSON) hoặc thẻ <shadow>
(XML) thay vì thuộc tính block
hoặc thẻ <block>
. Ví dụ: đây là một khối math_arithmetic
có 2 khối bóng math_number
được kết nối với khối này:
Và đây là một hộp công cụ sử dụng các khối đổ bóng này:
JSON
{
"kind": "flyoutToolbox",
"contents": [
{
"kind": "block",
"type": "math_arithmetic",
"fields": {
"OP": "ADD"
},
"inputs": {
"A": {
"shadow": {
"type": "math_number",
"fields": {
"NUM": 1
}
}
},
"B": {
"shadow": {
"type": "math_number",
"fields": {
"NUM": 1
}
}
}
}
},
]
}
XML
<xml id="toolbox" style="display: none">
<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>