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