Apa yang dimaksud dengan definisi blok?

Definisi blok adalah objek yang menentukan blok kustom. Misalnya, blok ini menentukan tampilan dan nuansa blok (teks, kolom, koneksi, warna, dll.), serta perilakunya (penangan 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 blok baru di-instansiasi, properti ini disalin ke objek blok yang baru dibuat. Blockly memanggil fungsi ini untuk memulai perilaku kustom.

Karena fungsi definisi dicampur ke dalam objek blok:

  • Kata kunci this dalam fungsi definisi mengacu pada objek blok. Artinya, objek 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 menginisialisasi blok dan yang digunakan untuk menentukan tampilan dan nuansa blok. Untuk mengetahui daftar lengkapnya, 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 berbeda 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 mengetahui informasi selengkapnya, lihat Alat Developer Blockly.
  • Temukan blok serupa, salin definisinya, dan ubah sesuai kebutuhan. Untuk mengetahui informasi selengkapnya, lihat Mengubah definisi yang ada.
  • Tulis definisi blok secara manual. Untuk mengetahui informasi selengkapnya, lihat JSON dan JavaScript.