تعریف بلوک شی ای است که یک بلوک سفارشی را تعریف می کند. به عنوان مثال، ظاهر و احساس بلوک (متن، فیلدها، اتصالات، رنگ، و غیره) و همچنین رفتار آن (کنترل کننده رویداد در سطح بلوک و غیره) را تعریف می کند.
به عنوان مثال، این بلوک:
را می توان در JSON یا جاوا اسکریپت به صورت زیر تعریف کرد:
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 یا جاوا اسکریپت تولید شده را در کد خود کپی کنید و در صورت نیاز کد سفارشی را اضافه کنید. برای اطلاعات بیشتر، به ابزارهای برنامهنویس Blockly مراجعه کنید.
- یک بلوک مشابه را پیدا کنید، تعریف آن را کپی کنید و در صورت نیاز آن را تغییر دهید. برای اطلاعات بیشتر، به اصلاح تعاریف موجود مراجعه کنید.
- تعریف بلوک را با دست بنویسید. برای اطلاعات بیشتر، JSON و جاوا اسکریپت را ببینید.