הגדרת בלוק היא אובייקט שמגדיר בלוק מותאם אישית. לדוגמה, הוא מגדיר את המראה והתחושה של הבלוק (טקסט, שדות, חיבורים, צבע וכו'), וגם את ההתנהגות שלו (טיפול באירועים ברמת הבלוק וכו').
לדוגמה, הבלוק הזה:
אפשר להגדיר אותו ב-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, יוצרים את הגדרת הבלוק ישירות.
איך פועלות הגדרות הבלוק
הגדרת בלוק היא מיקסין שמכיל מאפיינים עם ערכי פונקציות. כשיוצרים בלוק חדש, המאפיינים האלה מועתקים לאובייקט הבלוק החדש שנוצר. מערכת Blockly קוראת לפונקציות האלה כדי להפעיל התנהגות מותאמת אישית.
מכיוון שפונקציות ההגדרה משולבות באובייקט הבלוק:
- מילת המפתח
this
בפונקציות ההגדרה מתייחסת לאובייקט הבלוק. כלומר, אפשר להשתמש בו כדי לגשת לשיטות ולמאפיינים הציבוריים בכיתהBlock
(או בכיתהBlockSvg
).
ב-Blockly מוגדרות מספר פונקציות קטן שאפשר להשתמש בהן כדי להתאים אישית בלוקים. הפונקציה הנפוצה ביותר היא init
, שמפעילים אותה ב-Blockly כדי לאתחל בלוק, והיא משמשת להגדרת המראה והתחושה של הבלוק. רשימה מלאה מופיעה במאפיינים עם ערך פונקציה ב-classes Block
ו-BlockSvg
.
המאפיינים האלה יוצרים למעשה ממשק להטמעה של הגדרות של בלוקים, והם כולם אופציונליים.
הגדרות של בלוקים יכולות לכלול גם פונקציות בהתאמה אישית, אבל Blockly לא תפנה אליהן ישירות. במקום זאת, אפשר להשתמש בהם כדי להטמיע פונקציות אחרות. לדוגמה, בורר אירועים ברמת הבלוק (המאפיין Block.onchange
) יכול להעביר אירועים שונים לפונקציות בהתאמה אישית שונות.
איך יוצרים הגדרות חסימה
יש כמה דרכים שונות ליצירת הגדרות של בלוקים:
- אתם יכולים להשתמש בכלים למפתחים של Blockly כדי להגדיר את המראה והתחושה של הבלוק. מעתיקים את ה-JSON או את ה-JavaScript שנוצרו לקוד ומוסיפים קוד מותאם אישית לפי הצורך. מידע נוסף זמין במאמר כלים למפתחים של Blockly.
- מוצאים בלוק דומה, מעתיקים את ההגדרה שלו ומשנים אותה לפי הצורך. למידע נוסף, ראו שינוי הגדרות קיימות.
- כותבים הגדרה של בלוק ביד. מידע נוסף זמין במאמר JSON ו-JavaScript.