ब्लॉक डेफ़िनिशन एक ऐसा ऑब्जेक्ट होता है जो कस्टम ब्लॉक को तय करता है. उदाहरण के लिए, यह ब्लॉक के लुक और फ़ील (टेक्स्ट, फ़ील्ड, कनेक्शन, रंग वगैरह) के साथ-साथ इसके व्यवहार (ब्लॉक-लेवल इवेंट हैंडलर वगैरह) को भी तय करता है.
उदाहरण के लिए, यह ब्लॉक:
इसे JSON या JavaScript में इस तरह से तय किया जा सकता है:
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
, 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');
}
};
JavaScript का इस्तेमाल करने पर, ब्लॉक की परिभाषा सीधे तौर पर बनाई जाती है.
ब्लॉक की परिभाषाएं कैसे काम करती हैं
ब्लॉक की परिभाषा, फ़ंक्शन की वैल्यू वाली प्रॉपर्टी शामिल करने वाला mixin होता है. जब कोई नया ब्लॉक इंस्टैंशिएट किया जाता है, तो इन प्रॉपर्टी को नए बनाए गए ब्लॉक ऑब्जेक्ट में कॉपी कर दिया जाता है. Blockly इन फ़ंक्शन को कॉल करता है, ताकि कस्टम व्यवहार लागू किया जा सके.
क्योंकि परिभाषा फ़ंक्शन, ब्लॉक ऑब्जेक्ट में मिक्स किए जाते हैं:
- डेफ़िनिशन फ़ंक्शन में
this
कीवर्ड, ब्लॉक ऑब्जेक्ट को दिखाता है. इसका मतलब है कि इसका इस्तेमाल,Block
(याBlockSvg
) क्लास में मौजूद सार्वजनिक तरीकों और प्रॉपर्टी को ऐक्सेस करने के लिए किया जा सकता है.
Blockly, कुछ फ़ंक्शन तय करता है. इनका इस्तेमाल करके, ब्लॉक को पसंद के मुताबिक बनाया जा सकता है. इनमें सबसे आम init
है. Blockly, ब्लॉक को शुरू करने के लिए इसे कॉल करता है. इसका इस्तेमाल ब्लॉक के लुक और फ़ील को तय करने के लिए किया जाता है. पूरी सूची देखने के लिए, Block
और BlockSvg
क्लास में फ़ंक्शन की वैल्यू वाली प्रॉपर्टी देखें.
ये प्रॉपर्टी, ब्लॉक की परिभाषाओं के लिए एक इंटरफ़ेस बनाती हैं, ताकि उन्हें लागू किया जा सके. हालांकि, इनमें से किसी भी प्रॉपर्टी को लागू करना ज़रूरी नहीं है.
ब्लॉक डेफ़िनिशन में कस्टम फ़ंक्शन भी हो सकते हैं. हालांकि, Blockly इन्हें सीधे तौर पर कॉल नहीं करेगा. इसके बजाय, इनका इस्तेमाल अन्य फ़ंक्शन लागू करने के लिए किया जा सकता है. उदाहरण के लिए, ब्लॉक-लेवल का इवेंट हैंडलर (Block.onchange
प्रॉपर्टी), अलग-अलग इवेंट को अलग-अलग कस्टम फ़ंक्शन को सौंप सकता है.
ब्लॉक की परिभाषाएं बनाने का तरीका
ब्लॉक की परिभाषाएं बनाने के कई तरीके हैं:
- अपने ब्लॉक के रंग, डिज़ाइन, और साइज़ वगैरह के लिए, Blockly डेवलपर टूल का इस्तेमाल करें. जनरेट किए गए JSON या JavaScript को अपने कोड में कॉपी करें और ज़रूरत के मुताबिक कस्टम कोड जोड़ें. ज़्यादा जानकारी के लिए, Blockly Developer Tools देखें.
- मिलता-जुलता ब्लॉक ढूंढें, उसकी परिभाषा कॉपी करें, और उसमें अपनी ज़रूरत के हिसाब से बदलाव करें. ज़्यादा जानकारी के लिए, मौजूदा परिभाषाओं में बदलाव करना लेख पढ़ें.
- ब्लॉक की परिभाषा को मैन्युअल तरीके से लिखें. ज़्यादा जानकारी के लिए, JSON और JavaScript देखें.