প্রিসেট ব্লক

আপনি একটি টুলবক্সে ব্লকের অবস্থা কনফিগার (প্রিসেট) করতে পারেন। উদাহরণস্বরূপ, আপনি একটি ক্ষেত্র একটি ডিফল্ট মান সেট করতে পারেন বা দুটি ব্লক একসাথে সংযুক্ত করতে পারেন। এছাড়াও আপনি ছায়া ব্লক তৈরি করতে পারেন, যা চাইল্ড ব্লকের জন্য ডিফল্ট হিসেবে কাজ করে।

উদাহরণ

এখানে প্রিসেট ব্লকের কিছু উদাহরণ রয়েছে।

একটি পূর্বনির্ধারিত ক্ষেত্রের মান দিয়ে ব্লক করুন

এখানে একটি math_number ব্লক রয়েছে যার ক্ষেত্র ডিফল্ট 0 এর পরিবর্তে 42 নম্বর প্রদর্শন করে:

একটি নম্বর ব্লক যার মান 42 এ প্রিসেট করা আছে।

এবং এখানে একটি টুলবক্স যা এই ক্ষেত্রটি সেট করে:

JSON

{
 "kind": "flyoutToolbox",
 "contents": [
   {
     "kind": "block",
     "type": "math_number",
     "fields": {
       "NUM": 42
     }
   },
 ]
}

এক্সএমএল

<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 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 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()));

এক্সএমএল

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"
        }
      }
    }
  ]
}

ছায়া ব্লক

শ্যাডো ব্লক হল প্লেসহোল্ডার ব্লক যা বিভিন্ন ফাংশন সঞ্চালন করে:

  • তারা তাদের মূল ব্লকের জন্য ডিফল্ট মান নির্দেশ করে।
  • তারা ব্যবহারকারীদের একটি সংখ্যা বা স্ট্রিং ব্লক আনার প্রয়োজন ছাড়াই সরাসরি মান টাইপ করার অনুমতি দেয়।
  • একটি নিয়মিত ব্লকের বিপরীতে, ব্যবহারকারী যদি তাদের উপরে একটি ব্লক ফেলে দেয় তবে সেগুলি প্রতিস্থাপিত হয়।
  • তারা ব্যবহারকারীকে প্রত্যাশিত মূল্যের ধরণ সম্পর্কে অবহিত করে।

একটি শ্যাডো ব্লক তৈরি করতে, block প্রপার্টি বা <block> ট্যাগের পরিবর্তে shadow প্রপার্টি (JSON) বা <shadow> ট্যাগ (XML) ব্যবহার করুন। উদাহরণস্বরূপ, এখানে একটি 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 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>