Definicja bloku to obiekt, który definiuje blok niestandardowy. Określa on np. wygląd i działanie bloku (tekst, pola, połączenia, kolor itp.) oraz jego zachowanie (moduł obsługi zdarzeń na poziomie bloku itp.).
Na przykład ten blok:

można zdefiniować w formacie JSON lub JavaScript w ten sposób:
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 tworzy definicję bloku na podstawie obiektu 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');
}
};
W przypadku JavaScript definicję bloku tworzysz bezpośrednio.
Jak działają definicje bloków
Definicja bloku to miksin zawierający właściwości o wartości funkcji. Gdy tworzony jest nowy blok, te właściwości są kopiowane do nowo utworzonego obiektu bloku. Blockly wywołuje te funkcje, aby wywołać niestandardowe zachowanie.
Ponieważ funkcje definicji są mieszane z obiektem bloku:
- Słowo kluczowe
thisw funkcjach definicji odnosi się do obiektu bloku. Oznacza to, że można go używać do uzyskiwania dostępu do publicznych metod i właściwości w klasieBlock(lubBlockSvg).
Blockly definiuje niewielką liczbę funkcji, których możesz użyć do dostosowania bloków. Najczęstsza z nich to init, którą Blockly wywołuje, aby zainicjować blok i która służy do określania wyglądu i działania bloku. Pełną listę znajdziesz we
właściwościach o wartości funkcji w
Block i
BlockSvg klasach.
Te właściwości tworzą interfejs, który definicje bloków mogą implementować. Wszystkie są opcjonalne.
Definicje bloków mogą też zawierać funkcje niestandardowe, ale Blockly nie będzie ich wywoływać bezpośrednio. Zamiast tego można ich używać do implementowania innych funkcji. Na przykład moduł obsługi zdarzeń na poziomie bloku (właściwość Block.onchange) może przekazywać różne zdarzenia do różnych funkcji niestandardowych.
Jak tworzyć definicje bloków
Definicje bloków można tworzyć na kilka sposobów:
- Użyj Narzędzi dla programistów Blockly, aby określić wygląd i działanie bloku. Skopiuj wygenerowany kod JSON lub JavaScript do swojego kodu i w razie potrzeby dodaj kod niestandardowy. Więcej informacji znajdziesz w artykule Narzędzia dla programistów Blockly Tools.
- Znajdź podobny blok, skopiuj jego definicję i zmodyfikuj ją w razie potrzeby. Więcej informacji znajdziesz w artykule Modyfikowanie istniejących definicji.
- Napisz definicję bloku ręcznie. Więcej informacji znajdziesz w artykułach JSON i JavaScript.