Định nghĩa khối là một đối tượng xác định một khối tuỳ chỉnh. Ví dụ: thuộc tính này 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 đị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ẽ trực tiếp tạo đị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 thành phần kết hợp chứa các thuộc tính có giá trị hàm. Khi một khối mới được tạo bản sao, 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 phương thức này để 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ố hàm mà bạn có thể sử dụng để tuỳ chỉnh các khối. Phổ biến nhất trong số này là init
, Blockly gọi để khởi tạo một khối và 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 lớp Block
và BlockSvg
.
Các thuộc tính này tạo thành một giao diện hiệu quả cho các định nghĩa khối để triển khai; 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ể sử 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ụ dành 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 nếu cần. Để biết thêm thông tin, hãy xem bài viết 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 nếu cần. Để biết thêm thông tin, hãy xem phần Sửa đổi định nghĩa hiện có.
- Viết định nghĩa khối theo cách thủ công. Để biết thêm thông tin, hãy xem phần JSON và JavaScript.