يمكنك ضبط (إعداد مسبق) حالة الحظر في صندوق أدوات. على سبيل المثال، يمكنك ضبط حقل على قيمة تلقائية أو ربط كتلتَين معًا. يمكنك أيضًا إنشاء حظر غير مرئي، وهو بمثابة الإعدادات التلقائية لعمليات الحظر الفرعية.
أمثلة
في ما يلي بعض الأمثلة على الحظر المسبق.
الحظر باستخدام قيمة حقل محدّدة مسبقًا
في ما يلي math_number
كتلة يعرض حقلها الرقم 42 بدلاً من القيمة التلقائية 0:
في ما يلي مجموعة أدوات تضبط هذا الحقل:
JSON
{
"kind": "flyoutToolbox",
"contents": [
{
"kind": "block",
"type": "math_number",
"fields": {
"NUM": 42
}
},
]
}
XML
<xml id="toolbox" style="display: none">
<block type="math_number">
<field name="NUM">42</field>
</block>
</xml>
المربّعات المتصلة مُسبَقًا
في ما يلي controls_for
يحتوي على ثلاثة math_number
مرتبطة به:
إليك صندوق أدوات يربط هذه اللبنات مسبقًا:
JSON
{
"kind": "flyoutToolbox",
"contents": [
{
"kind": "block",
"type": "controls_for",
"inputs": {
"FROM": {
"block": {
"type": "math_number",
"fields": {
"NUM": 1
}
}
},
"TO": {
"block": {
"type": "math_number",
"fields": {
"NUM": 10
}
}
},
"BY": {
"block": {
"type": "math_number",
"fields": {
"NUM": 1
}
}
},
}
},
]
}
XML
<xml id="toolbox" style="display: none">
<block type="controls_for">
<value name="FROM">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
<value name="TO">
<block type="math_number">
<field name="NUM">10</field>
</block>
</value>
<value name="BY">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
</block>
</xml>
المربّعات غير المفعّلة
لا يمكن سحب الحِزم غير المفعّلة من صندوق الأدوات. يمكن إيقاف الحظر بشكل فردي باستخدام السمة الاختيارية disabled
.
JSON
{
"kind": "flyoutToolbox",
"contents": [
{
"kind": "block",
"type":"math_number"
},
{
"kind": "block",
"type": "math_arithmetic"
},
{
"kind": "block",
"type": "math_single",
"disabled": "true"
}
]
}
XML
<xml id="toolbox" style="display: none">
<block type="math_number"></block>
<block type="math_arithmetic"></block>
<block type="math_single" disabled="true"></block>
</xml>
يمكنك أيضًا إيقاف الحظر أو تفعيله آليًا باستخدام
setDisabledReason
.
ضبط عمليات الحظر
يمكنك ضبط أحد البلوكات في صندوق الأدوات بأي طريقة يمكنك ضبطه بها في مساحة العمل. على سبيل المثال، يمكنك ضبط قيم الحقول وربط اللبنات بمدخلات القيمة أو العبارة وإضافة تعليقات وتصغير اللبنات أو إيقافها. وهذا ممكن لأنّ صناديق الأدوات تستخدم الرمز نفسه لضبط الحظر الذي تستخدمه مساحات العمل لتسلسله.
وهذا يعني أيضًا أنّه من السهل إنشاء إعدادات الحظر. ما عليك سوى تحميل كتلتك في مساحة عمل، وضبطها بالطريقة التي تريدها، ثم تحويلها إلى سلسلة من خلال تشغيل الرمز التالي في وحدة التحكّم.
JSON
console.log(Blockly.serialization.workspaces.save(Blockly.getMainWorkspace()));
XML
console.log(Blockly.Xml.workspaceToDom(Blockly.getMainWorkspace()));
يمكنك بعد ذلك نسخ رمز الإعداد ولصقه في صندوق الأدوات. احرص على إزالة السمات x
وy
وid
التي تتجاهلها مجموعة الأدوات.
الحقول المتغيّرة
قد تحتاج الحقول المتغيرة إلى تحديدها بشكل مختلف عندما تكون في مجموعة أدوات مقارنةً بحالتها عند تسلسلها.
على وجه الخصوص، عندما يتم عادةً تحويل الحقول المتغيرة إلى تنسيق JSON، فإنّها لا تحتوي إلا على رقم تعريف المتغير الذي تمثله، لأنّه يتم تحويل اسم المتغير ونوعه إلى تنسيق JSON بشكل منفصل. ومع ذلك، لا تحتوي مربّعات الأدوات على هذه المعلومات، لذا يجب تضمينها في حقل المتغيّر مباشرةً.
{
"kind": "flyoutToolbox",
"content": [
{
"kind": "block",
"type": "controls_for",
"fields": {
"VAR": {
"name": "index",
"type": "Number"
}
}
}
]
}
مربّعات الظل
الكتل الظلية هي كتل عناصر نائبة تؤدي عدة وظائف:
- تشير هذه السمة إلى القيم التلقائية للكتلة الرئيسية.
- تسمح هذه الحقول للمستخدمين بكتابة القيم مباشرةً بدون الحاجة إلى جلب رقم أو سلسلة نصية.
- وعلى عكس الحظر العادي، يتم استبدالها إذا أسقط المستخدم حظرًا فوقها.
- تُعلم المستخدم بنوع القيمة المتوقّعة.
لإنشاء كتلة ظل، استخدِم السمة shadow
(JSON) أو العلامة <shadow>
(XML) بدلاً من السمة block
أو العلامة <block>
. على سبيل المثال، في ما يلي
كتلة math_arithmetic
تتضمّن كتلتَي math_number
ظل متصلتَين بها:
إليك مجموعة أدوات تستخدم عناصر التحكّم هذه:
JSON
{
"kind": "flyoutToolbox",
"contents": [
{
"kind": "block",
"type": "math_arithmetic",
"fields": {
"OP": "ADD"
},
"inputs": {
"A": {
"shadow": {
"type": "math_number",
"fields": {
"NUM": 1
}
}
},
"B": {
"shadow": {
"type": "math_number",
"fields": {
"NUM": 1
}
}
}
}
},
]
}
XML
<xml id="toolbox" style="display: none">
<block type="math_arithmetic">
<field name="OP">ADD</field>
<value name="A">
<shadow type="math_number">
<field name="NUM">1</field>
</shadow>
</value>
<value name="B">
<shadow type="math_number">
<field name="NUM">1</field>
</shadow>
</value>
</block>
</xml>