কাস্টম ব্লক ওভারভিউ

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

একটি নতুন ধরনের ব্লক সংজ্ঞায়িত করতে এবং ব্যবহার করতে, আপনার তিনটি জিনিস প্রয়োজন:

  • ব্লকের সংজ্ঞা : একটি ব্লকের ধরন এবং সেইসাথে নির্দিষ্ট আচরণের চেহারা এবং অনুভূতি সংজ্ঞায়িত করে।
  • ব্লক-কোড জেনারেটর : এই ধরনের ব্লকের জন্য কোড স্ট্রিং তৈরি করে। টার্গেট ভাষা জাভাস্ক্রিপ্ট না হলেও এটি সবসময় জাভাস্ক্রিপ্টে লেখা হয়।
  • টুলবক্স রেফারেন্স : টুলবক্সে ব্লক টাইপের একটি রেফারেন্স, যাতে ব্যবহারকারীরা এটিকে ওয়ার্কস্পেসে যোগ করতে পারেন।

ব্লক সংজ্ঞা

একটি ব্লক সংজ্ঞা একটি ব্লকের চেহারা এবং অনুভূতিকে সংজ্ঞায়িত করে, যেমন এর পাঠ্য, ক্ষেত্র, সংযোগ এবং রঙ। এটি ব্লক-নির্দিষ্ট আচরণকেও সংজ্ঞায়িত করতে পারে, যেমন একটি ব্লক-নির্দিষ্ট ইভেন্ট হ্যান্ডলার। উদাহরণস্বরূপ, এই ব্লক:

একটি `স্ট্রিং_লেংথ` ব্লক।

JSON বা জাভাস্ক্রিপ্টে নিম্নরূপ সংজ্ঞায়িত করা যেতে পারে:

JSON

Blockly.common.defineBlocksWithJsonArray([{
  "type": "string_length",
  "message0": 'length of %1',
  "args0": [
    {
      "type": "input_value",
      "name": "VALUE",
      "check": "String"
    }
  ],
  "output": "Number",
  "colour": 160,
  "tooltip": "Returns number of letters in the provided text.",
  "helpUrl": "http://www.w3schools.com/jsref/jsref_length_string.asp"
}]);

জাভাস্ক্রিপ্ট

Blockly.Blocks['string_length'] = {
   init: function() {
     this.appendValueInput('VALUE')
         .setCheck('String')
         .appendField('length of');
     this.setOutput(true, 'Number');
     this.setColour(160);
     this.setTooltip('Returns number of letters in the provided text.');
     this.setHelpUrl('http://www.w3schools.com/jsref/jsref_length_string.asp');
   }
};

ব্লক সংজ্ঞা এবং সেগুলি কীভাবে কাজ করে সে সম্পর্কে আরও তথ্যের জন্য, ব্লক সংজ্ঞা কী? .

ব্লক কোড জেনারেটর

একটি ব্লককে কোডে রূপান্তর করতে, আপনি যে ভাষা তৈরি করতে চান তার জন্য আলাদা জেনারেটর ফাংশন প্রয়োজন। উদাহরণস্বরূপ, এখানে একটি জেনারেটর রয়েছে যা জাভাস্ক্রিপ্ট তৈরি করে:

javascriptGenerator.forBlock['string_length'] = function(block, generator) {
   // String or array length.
   var argument0 = generator.valueToCode(block, 'VALUE', Order.FUNCTION_CALL) || '\'\'';
   return [argument0 + '.length', Order.MEMBER];
};

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

আরও তথ্যের জন্য, ব্লক-কোড জেনারেটর দেখুন।

টুলবক্স রেফারেন্স

আপনি আপনার ব্লকের ধরন সংজ্ঞায়িত করার পরে, একটি টুলবক্সে এটি উল্লেখ করতে টাইপ নামটি ব্যবহার করুন:

JSON

var toolbox = {
     "kind": "categoryToolbox",
     "name": "Text"
     "contents": [
       {
         "kind": "block",
         "type": "string_length"
       },
     ]
   };

এক্সএমএল

<xml id="toolbox" style="display: none"> WHY IS THERE DISPLAY: NONE HERE?
   <category name="Text">
     <block type="string_length"></block>
   </category>
   ...
</xml>

আরও তথ্যের জন্য, একটি ফ্লাইআউট টুলবক্স সংজ্ঞায়িত করুন বা একটি বিভাগ টুলবক্স সংজ্ঞায়িত করুন দেখুন।