Định nghĩa khối là một đối tượng xác định một khối tuỳ chỉnh. Ví dụ: nó xác định giao diện của khối (văn bản, trường, kết nối, màu sắc, v.v.), cũng như hành vi của khối (trình xử lý sự kiện cấp khối, v.v.).
Ví dụ: khối này:
có thể được xác định trong JSON hoặc JavaScript như sau:
JSON
Blockly.common.defineBlocksWithJsonArray([{
"type": "string_length",
"message0": 'length of %1',
"args0": [
{
"type": "input_value",
"name": "VALUE",
"check": "String"
}
],
"output": "Number",
"colour": 160,
"tooltip": "Returns number of letters in the provided text.",
"helpUrl": "http://www.w3schools.com/jsref/jsref_length_string.asp"
}]);
defineBlocksWithJsonArray
tạo một định nghĩa khối từ một đối tượng JSON.
JavaScript
Blockly.Blocks['string_length'] = {
init: function() {
this.appendValueInput('VALUE')
.setCheck('String')
.appendField('length of');
this.setOutput(true, 'Number');
this.setColour(160);
this.setTooltip('Returns number of letters in the provided text.');
this.setHelpUrl('http://www.w3schools.com/jsref/jsref_length_string.asp');
}
};
Khi sử dụng JavaScript, bạn sẽ tạo trực tiếp định nghĩa khối.
Cách hoạt động của định nghĩa khối
Định nghĩa khối là một mixin chứa các thuộc tính có giá trị hàm. Khi một khối mới được khởi tạo, các thuộc tính này sẽ được sao chép vào đối tượng khối mới tạo. Blockly gọi các hàm này để gọi hành vi tuỳ chỉnh.
Vì các hàm định nghĩa được trộn vào đối tượng khối:
- Từ khoá
this
trong các hàm định nghĩa đề cập đến đối tượng khối. Tức là bạn có thể dùng để truy cập vào các phương thức và thuộc tính công khai trong lớpBlock
(hoặcBlockSvg
).
Blockly xác định một số ít hàm mà bạn có thể dùng để tuỳ chỉnh các khối. Phổ biến nhất trong số này là init
, mà Blockly gọi để khởi tạo một khối và được dùng để xác định giao diện của khối. Để biết danh sách đầy đủ, hãy xem các thuộc tính có giá trị hàm trong các lớp Block
và BlockSvg
.
Những thuộc tính này tạo thành một giao diện để triển khai các định nghĩa về khối; tất cả đều không bắt buộc.
Định nghĩa khối cũng có thể có các hàm tuỳ chỉnh, mặc dù Blockly sẽ không gọi trực tiếp các hàm này. Thay vào đó, bạn có thể dùng các hàm này để triển khai các hàm khác. Ví dụ: trình xử lý sự kiện ở cấp khối (thuộc tính Block.onchange
) có thể uỷ quyền các sự kiện khác nhau cho các hàm tuỳ chỉnh khác nhau.
Cách tạo định nghĩa khối
Có một số cách để tạo định nghĩa khối:
- Sử dụng Công cụ cho nhà phát triển Blockly để xác định giao diện của khối. Sao chép JSON hoặc JavaScript đã tạo vào mã của bạn và thêm mã tuỳ chỉnh khi cần. Để biết thêm thông tin, hãy xem Công cụ dành cho nhà phát triển Blockly.
- Tìm một khối tương tự, sao chép định nghĩa của khối đó và sửa đổi theo nhu cầu. Để biết thêm thông tin, hãy xem phần Sửa đổi các định nghĩa hiện có.
- Viết định nghĩa khối bằng tay. Để biết thêm thông tin, hãy xem phần JSON và JavaScript.