ব্লক ডেফিনিশন হলো এমন একটি অবজেক্ট যা একটি কাস্টম ব্লক নির্ধারণ করে। উদাহরণস্বরূপ, এটি ব্লকটির বাহ্যিক রূপ (টেক্সট, ফিল্ড, কানেকশন, রঙ ইত্যাদি) এবং এর আচরণ (ব্লক-লেভেল ইভেন্ট হ্যান্ডলার ইত্যাদি) নির্ধারণ করে।
উদাহরণস্বরূপ, এই ব্লকটি:

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 অবজেক্ট থেকে ব্লক ডেফিনিশন তৈরি করে।
জাভাস্ক্রিপ্ট
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');
}
};
জাভাস্ক্রিপ্ট ব্যবহার করার সময়, আপনি সরাসরি ব্লক ডেফিনিশন তৈরি করেন।
ব্লক সংজ্ঞা কীভাবে কাজ করে
ব্লক ডেফিনিশন হলো একটি মিক্সিন, যাতে ফাংশন-ভ্যালুযুক্ত প্রোপার্টি থাকে। যখন একটি নতুন ব্লক ইনস্ট্যানশিয়েট করা হয়, তখন এই প্রোপার্টিগুলো নতুন তৈরি হওয়া ব্লক অবজেক্টে কপি করা হয়। কাস্টম আচরণ কার্যকর করার জন্য Blockly এই ফাংশনগুলোকে কল করে।
কারণ ডেফিনিশন ফাংশনগুলো ব্লক অবজেক্টের মধ্যে মিশ্রিত থাকে:
- ডেফিনিশন ফাংশনে ব্যবহৃত
thisকীওয়ার্ডটি ব্লক অবজেক্টকে নির্দেশ করে। অর্থাৎ, এটি ব্যবহার করেBlock(বাBlockSvg) ক্লাসের পাবলিক মেথড ও প্রোপার্টিগুলো অ্যাক্সেস করা যায়।
Blockly অল্প কিছু ফাংশন সংজ্ঞায়িত করে যা আপনি ব্লক কাস্টমাইজ করতে ব্যবহার করতে পারেন। এগুলোর মধ্যে সবচেয়ে প্রচলিত হলো init , যা Blockly একটি ব্লক শুরু করার জন্য কল করে এবং যা ব্লকটির চেহারা ও অনুভূতি নির্ধারণ করতে ব্যবহৃত হয়। একটি সম্পূর্ণ তালিকার জন্য, Block এবং BlockSvg ক্লাসের ফাংশন-ভ্যালুড প্রোপার্টিগুলো দেখুন। এই প্রোপার্টিগুলো কার্যকরভাবে ব্লক ডেফিনিশনগুলোর ইমপ্লিমেন্ট করার জন্য একটি ইন্টারফেস তৈরি করে; এগুলোর সবগুলোই ঐচ্ছিক।
ব্লক ডেফিনিশনেও কাস্টম ফাংশন থাকতে পারে, যদিও Blockly এগুলোকে সরাসরি কল করবে না। এর পরিবর্তে, এগুলো অন্যান্য ফাংশন ইমপ্লিমেন্ট করতে ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, একটি ব্লক-লেভেল ইভেন্ট হ্যান্ডলার ( Block.onchange প্রপার্টি) বিভিন্ন ইভেন্টকে বিভিন্ন কাস্টম ফাংশনে ডেলিগেট করতে পারে।
ব্লক সংজ্ঞা তৈরি করার পদ্ধতি
ব্লক সংজ্ঞা তৈরি করার বিভিন্ন উপায় রয়েছে:
- আপনার ব্লকের নকশা ও রূপ নির্ধারণ করতে Blockly Developer Tools ব্যবহার করুন। তৈরি হওয়া JSON বা JavaScript ফাইলটি আপনার কোডে কপি করুন এবং প্রয়োজন অনুযায়ী নিজস্ব কোড যোগ করুন। আরও তথ্যের জন্য, Blockly Developer Tools দেখুন।
- একটি অনুরূপ ব্লক খুঁজুন, এর সংজ্ঞাটি অনুলিপি করুন এবং প্রয়োজন অনুযায়ী পরিবর্তন করুন। আরও তথ্যের জন্য, বিদ্যমান সংজ্ঞা পরিবর্তন করুন দেখুন।
- হাতে লিখে একটি ব্লক ডেফিনিশন তৈরি করুন। আরও তথ্যের জন্য JSON এবং JavaScript দেখুন।