بلوک های از پیش تعیین شده، بلوک های از پیش تعیین شده، بلوک های از پیش تعیین شده، بلوک های از پیش تعیین شده

می توانید وضعیت بلوک ها را در جعبه ابزار پیکربندی کنید (از پیش تنظیم کنید). به عنوان مثال، می توانید یک فیلد را به یک مقدار پیش فرض تنظیم کنید یا دو بلوک را به یکدیگر متصل کنید. شما همچنین می توانید بلوک های سایه ایجاد کنید، که به عنوان پیش فرض برای بلوک های فرزند عمل می کنند.

نمونه ها

در اینجا چند نمونه از بلوک های از پیش تعیین شده آورده شده است.

با مقدار فیلد از پیش تعیین شده مسدود کنید

در اینجا یک بلوک math_number وجود دارد که فیلد آن به جای پیش فرض 0 عدد 42 را نشان می دهد:

یک بلوک اعداد که مقدار آن روی 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 به آن متصل است:

بلوک "شمارش با i از مقدار به مقدار به مقدار". سه ورودی مقدار به بلوک های اعداد با مقادیر 1، 10 و 1.

و در اینجا یک جعبه ابزار وجود دارد که این بلوک ها را از قبل متصل می کند:

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 به آن متصل است:

یک بلوک «ریاضی_حسابی» با دو ورودی مقدار که توسط یک عملگر از هم جدا شده‌اند کرکره ای که در آن اپراتور پلاس انتخاب می شود. هر ورودی مقدار حاوی a بلوک شماره سایه، که خاکستری شده است تا نشان دهد بلوک دیگری می تواند جایگزین شود آن را

و در اینجا جعبه ابزاری وجود دارد که از این بلوک های سایه استفاده می کند:

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>