Blok tanımı, özel bir bloğu tanımlayan bir nesnedir. Örneğin, bloğun görünümünü ve tarzını (metin, alanlar, bağlantılar, renk vb.) ve davranışını (blok düzeyinde etkinlik işleyici vb.) tanımlar.
Örneğin, şu blok:
JSON veya JavaScript'te aşağıdaki gibi tanımlanabilir:
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
, bir JSON nesnesinden blok tanımı oluşturur.
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');
}
};
JavaScript'i kullandığınızda blok tanımını doğrudan siz oluşturursunuz.
Blok tanımlarının işleyiş şekli
Blok tanımı, fonksiyon değerli özellikler içeren bir karışım öğesidir. Yeni bir blok oluşturulduğunda bu özellikler yeni oluşturulan blok nesnesine kopyalanır. Blockly, özel davranışı çağırmak için bu işlevleri çağırır.
Tanım işlevleri blok nesnesine karıştırıldığı için:
- Tanım işlevlerindeki
this
anahtar kelimesi, blok nesnesini ifade eder. YaniBlock
(veyaBlockSvg
) sınıfındaki herkese açık yöntemlere ve özelliklere erişmek için kullanılabilir.
Blockly, blokları özelleştirmek için kullanabileceğiniz az sayıda işlev tanımlar. Bunların en yaygın olanı init
'tür. Blockly, bir bloğu başlatmak için init
'yi çağırır ve bu işlev, bloğun görünümünü ve tarzını tanımlamak için kullanılır. Tam liste için Block
ve BlockSvg
sınıflarındaki işlev değerli özelliklere bakın.
Bu özellikler, blok tanımlarının uygulanacağı bir arayüz oluşturur. Bunların tümü isteğe bağlıdır.
Blok tanımlarında özel işlevler de bulunabilir ancak Blockly bunları doğrudan çağırmaz. Bunun yerine, diğer işlevleri uygulamak için kullanılabilirler. Örneğin, blok düzeyinde bir etkinlik işleyici (Block.onchange
mülkü), farklı etkinlikleri farklı özel işlevlere devredebilir.
Blok tanımları oluşturma
Blok tanımları oluşturmanın birkaç farklı yolu vardır:
- Bloğunuzun görünümünü ve tarzını tanımlamak için Blockly Geliştirici Araçları'nı kullanın. Oluşturulan JSON veya JavaScript'i kodunuza kopyalayın ve gerektiğinde özel kod ekleyin. Daha fazla bilgi için Blockly Geliştirici Araçları başlıklı makaleyi inceleyin.
- Benzer bir blok bulun, tanımını kopyalayın ve gerektiği şekilde değiştirin. Daha fazla bilgi için Mevcut tanımları değiştirme başlıklı makaleyi inceleyin.
- Manuel olarak bir blok tanımı yazın. Daha fazla bilgi için JSON ve JavaScript başlıklı makaleyi inceleyin.