הגדרת בלוק היא אובייקט שמגדיר בלוק מותאם אישית. לדוגמה, הוא מגדיר את המראה והתחושה של הבלוק (טקסט, שדות, חיבורים, צבע וכו'), וגם את ההתנהגות שלו (גורם מטפל באירועים ברמת הבלוק וכו').
לדוגמה, הבלוק הזה:

אפשר להגדיר את המשתנה ב-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.
- מוצאים בלוק דומה, מעתיקים את ההגדרה שלו ומשנים אותה לפי הצורך. מידע נוסף מופיע במאמר שינוי הגדרות קיימות.
- לכתוב הגדרה של בלוק באופן ידני. מידע נוסף מופיע במאמר בנושא JSON ו-JavaScript.