Apa yang dimaksud dengan definisi blok?

Definisi blok adalah objek yang menentukan blok kustom. Misalnya, kode ini menentukan tampilan dan nuansa blok, (teks, kolom, koneksi, warna, dll.), serta perilakunya (pengendali peristiwa tingkat blok, dll.).

Misalnya, blok ini:

Blok `string_length`.

dapat ditentukan dalam JSON atau JavaScript sebagai berikut:

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 membuat definisi blok dari objek 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');
   }
};

Saat menggunakan JavaScript, Anda membuat definisi blok secara langsung.

Cara kerja definisi blok

Definisi blok adalah mixin yang berisi properti bernilai fungsi. Saat instance blok baru dibuat, properti ini akan disalin ke objek blok yang baru dibuat. Blockly memanggil fungsi ini untuk memanggil perilaku kustom.

Karena fungsi definisi digabungkan ke objek blok:

  • Kata kunci this dalam fungsi definisi mengacu pada objek blok. Artinya, class ini dapat digunakan untuk mengakses metode dan properti publik di class Block (atau BlockSvg).

Blockly menentukan sejumlah kecil fungsi yang dapat Anda gunakan untuk menyesuaikan blok. Yang paling umum adalah init, yang dipanggil Blockly untuk melakukan inisialisasi blok dan digunakan untuk menentukan tampilan dan nuansa blok. Untuk mengetahui daftar lengkap, lihat properti bernilai fungsi di class Block dan BlockSvg. Properti ini secara efektif membentuk antarmuka untuk definisi blok yang akan diimplementasikan; semuanya bersifat opsional.

Definisi blok juga dapat memiliki fungsi kustom, meskipun Blockly tidak akan memanggilnya secara langsung. Sebagai gantinya, fungsi ini dapat digunakan untuk menerapkan fungsi lain. Misalnya, pengendali peristiwa tingkat blok (properti Block.onchange) dapat mendelegasikan peristiwa yang berbeda ke fungsi kustom yang berbeda.

Cara membuat definisi blok

Ada beberapa cara untuk membuat definisi blok:

  • Gunakan Alat Developer Blockly untuk menentukan tampilan dan nuansa blok Anda. Salin JSON atau JavaScript yang dihasilkan ke kode Anda dan tambahkan kode kustom sesuai kebutuhan. Untuk informasi selengkapnya, lihat Blockly Developer Tools.
  • Temukan blok yang serupa, salin definisinya, dan ubah sesuai kebutuhan. Untuk mengetahui informasi selengkapnya, lihat Mengubah definisi yang ada.
  • Tulis definisi blok dengan tangan. Untuk informasi selengkapnya, lihat JSON dan JavaScript.