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 kullandığınızda blok tanımını doğrudan oluşturursunuz.
Blok tanımlarının işleyiş şekli
Blok tanımı, işlev değerli özellikler içeren bir mixin'dir. Yeni bir blok örneği oluşturulduğunda bu özellikler, yeni oluşturulan blok nesnesine kopyalanır. Blockly, özel davranışları çağırmak için bu işlevleri çağırır.
Tanım işlevleri blok nesnesine karıştırıldığından:
- 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. Bunlardan en yaygın olanı, Blockly'nin bir bloğu başlatmak için çağırdığı ve bloğun görünümünü tanımlamak için kullanılan init
'dı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 uygulanması için etkili bir arayüz oluşturur. Hepsi isteğe bağlıdır.
Blok tanımları, Blockly bunları doğrudan çağırmasa da özel işlevlere de sahip olabilir. Bunun yerine, diğer işlevleri uygulamak için kullanılabilirler. Örneğin, blok düzeyinde bir etkinlik işleyici (Block.onchange
özelliği), farklı etkinlikleri farklı özel işlevlere temsilci olarak atayabilir.
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.
- Blok tanımını elle yazın. Daha fazla bilgi için JSON ve JavaScript konusuna bakın.