الفئات الديناميكية هي فئات تتم إعادة تعبئتها ديناميكيًا استنادًا إلى دالّة في كل مرة يتم فتحها فيها.
تتيح لك أداة Blockly إجراء ذلك من خلال السماح لك بربط فئة بوظيفة من خلال مفتاح سلسلة مسجَّل. يجب أن تعرِض الدالة تعريفًا لمحتوى الفئة (بما في ذلك الكتل والأزرار والعناوين وما إلى ذلك). يمكن تحديد المحتوى بتنسيق JSON أو XML، مع أنّه يُنصح باستخدام تنسيق JSON.
يُرجى العلم أيضًا أنّ الدالة تتلقّى مساحة العمل المستهدَفة كمَعلمة، لذا يمكن أن تستند الكتل في الفئة الديناميكية إلى حالة مساحة العمل.
JSON
// Returns an array of objects.
var coloursFlyoutCallback = function(workspace) {
// Returns an array of hex colours, e.g. ['#4286f4', '#ef0447']
var colourList = getPalette();
var blockList = [];
for (var i = 0; i < colourList.length; i++) {
blockList.push({
'kind': 'block',
'type': 'colour_picker',
'fields': {
'COLOUR': colourList[i]
}
});
}
return blockList;
};
// Associates the function with the string 'COLOUR_PALETTE'
myWorkspace.registerToolboxCategoryCallback(
'COLOUR_PALETTE', coloursFlyoutCallback);
XML
// Returns an array of XML nodes.
var coloursFlyoutCallback = function(workspace) {
// Returns an array of hex colours, e.g. ['#4286f4', '#ef0447']
var colourList = getPalette();
var blockList = [];
for (var i = 0; i < colourList.length; i++) {
var block = document.createElement('block');
block.setAttribute('type', 'colour_picker');
var field = document.createElement('field');
field.setAttribute('name', 'COLOUR');
field.innerText = colourList[i];
block.appendChild(field);
blockList.push(block);
}
return blockList;
};
// Associates the function with the string 'COLOUR_PALETTE'
myWorkspace.registerToolboxCategoryCallback(
'COLOUR_PALETTE', coloursFlyoutCallback);
بعد ربط دوال الفئات الديناميكية بمفتاح سلسلة (المعروف أيضًا باسم
مسجَّل)، يمكنك تعيين مفتاح السلسلة هذا إلى السمة custom
في
تعريف الفئة لجعل الفئة ديناميكية.
JSON
{
"kind": "category",
"name": "Colours",
"custom": "COLOUR_PALETTE"
}
XML
<category name="Colours" custom="COLOUR_PALETTE"></category>
الفئات الديناميكية المضمّنة
توفّر Blockly ثلاث فئات ديناميكية مضمّنة.
'VARIABLE'
تنشئ فئة للمتغيّرات غير المحدّدة.'VARIABLE_DYNAMIC'
ينشئ فئة لvarityped. يحتوي على أزرار لإنشاء سلاسل، وأرقام، وألوان.'PROCEDURE'
لإنشاء فئة لوحدات الدوالّ
JSON
{
"kind": "category",
"name": "Variables",
"custom": "VARIABLE"
},
{
"kind": "category",
"name": "Variables",
"custom": "VARIABLE_DYNAMIC"
},
{
"kind": "category",
"name": "Functions",
"custom": "PROCEDURE"
}
XML
<category name="Variables" custom="VARIABLE"></category>
<category name="Variables" custom="VARIABLE_DYNAMIC"></category>
<category name="Functions" custom="PROCEDURE"></category>
ملاحظة: يتم استخدام كلمة "الإجراء" في جميع أنحاء قاعدة بيانات Blockly، ولكن ثبت أنّ كلمة "الدالة" أكثر وضوحًا للطلاب. نعتذر عن عدم تطابق المعلومات.