ইভেন্ট

কর্মক্ষেত্রে প্রতিটি পরিবর্তন একটি ইভেন্টকে ট্রিগার করে। এই ঘটনাগুলি প্রতিটি পরিবর্তনের আগে এবং পরে অবস্থাকে সম্পূর্ণরূপে বর্ণনা করে।

কর্মক্ষেত্র থেকে ঘটনা শুনুন

ওয়ার্কস্পেসগুলিতে addChangeListener এবং removeChangeListener পদ্ধতি রয়েছে যা ইভেন্ট স্ট্রীম শোনার জন্য ব্যবহার করা যেতে পারে। একটি উদাহরণ হল কোডের রিয়েল-টাইম জেনারেশন । আরেকটি উদাহরণ হল সর্বোচ্চ ব্লক সীমা ডেমো । যেমনটি প্রায়শই হয়, এই দুটি উদাহরণের কোনটিই ট্রিগারিং ইভেন্টটি কী ছিল তা বিবেচনা করে না। তারা কেবল কর্মক্ষেত্রের বর্তমান অবস্থা দেখে।

আরও পরিশীলিত ইভেন্ট শ্রোতা ট্রিগারিং ইভেন্টটি দেখবে। নিম্নলিখিত উদাহরণটি সনাক্ত করে যখন ব্যবহারকারী তাদের প্রথম মন্তব্য তৈরি করে, একটি সতর্কতা জারি করে, তারপর শোনা বন্ধ করে যাতে আর কোন সতর্কতা ট্রিগার না হয়।

function onFirstComment(event) {
  if (event.type == Blockly.Events.BLOCK_CHANGE &&
      event.element == 'comment' &&
      !event.oldValue && event.newValue) {
    alert('Congratulations on creating your first comment!')
    workspace.removeChangeListener(onFirstComment);
  }
}
workspace.addChangeListener(onFirstComment);

ফ্লাইআউটের অভ্যন্তরে ঘটে যাওয়া কোনও ঘটনা শোনার জন্য একজন শ্রোতাকে ফ্লাইআউটের কর্মক্ষেত্রে যুক্ত করা যেতে পারে।

var flyoutWorkspace = yourWorkspace.getFlyout().getWorkspace();
flyoutWorkspace.addChangeListener(onFirstComment);

ব্লক থেকে ঘটনা শুনুন

ব্লকে শ্রোতা ফাংশন পরিবর্তন হতে পারে যা কর্মক্ষেত্রে যেকোন পরিবর্তনের জন্য বলা হয় (ব্লকের সাথে সম্পর্কিত নয় সহ)। এগুলি প্রায়শই ব্লকের সতর্কীকরণ পাঠ্য বা কর্মক্ষেত্রের বাইরে অনুরূপ ব্যবহারকারীর বিজ্ঞপ্তি সেট করতে ব্যবহৃত হয়।

ফাংশনটি একটি ফাংশনের সাথে Block.setOnChange কল করার মাধ্যমে যোগ করা হয় এবং আপনি যদি সমস্ত প্ল্যাটফর্মে এটি ব্যবহার করার পরিকল্পনা করেন তবে শুরু করার সময় বা একটি JSON এক্সটেনশনের মাধ্যমে করা যেতে পারে।

JSON

{
  // ...,
  "extensions":["warning_on_change"],
}

Blockly.Extensions.register('warning_on_change', function() {
  // Example validation upon block change:
  this.setOnChange(function(changeEvent) {
    if (this.getInput('NUM').connection.targetBlock()) {
      this.setWarningText(null);
    } else {
      this.setWarningText('Must have an input block.');
    }
  });
});

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

Blockly.Blocks['block_type'] = {
  init: function() {
    // Example validation upon block change:
    this.setOnChange(function(changeEvent) {
      if (this.getInput('NUM').connection.targetBlock()) {
        this.setWarningText(null);
      } else {
        this.setWarningText('Must have an input block.');
      }
    });
  }
}

আপনি সরাসরি ব্লকে onchange সম্পত্তি সেট করতে পারেন:

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

Blockly.Blocks['block_type'] = {
  init: function() {
    // Example validation upon block change:
    this.onchange = function(changeEvent) {
      if (this.getInput('NUM').connection.targetBlock()) {
        this.setWarningText(null);
      } else {
        this.setWarningText('Must have an input block.');
      }
    };
  }
}

সিস্টেম পরিবর্তন ইভেন্টে পাসিং ফাংশন কল. ফাংশনের ভিতরে, this ব্লক ইনস্ট্যান্সকে বোঝায়।

যেহেতু ফাংশনটি যেকোন পরিবর্তনের জন্য বলা হয়, যদি ব্যবহার করা হয়, তাহলে ডেভেলপারদের নিশ্চিত করা উচিত যে শ্রোতা দ্রুত চলে। ওয়ার্কস্পেসের পরিবর্তনগুলি সম্পর্কেও সতর্ক হওয়া উচিত যা শ্রোতার কাছে ক্যাসকেড বা লুপ ব্যাক করতে পারে।

উদাহরণের জন্য controls_flow_statements , logic_compare , এবং procedures_ifreturn ব্লকগুলি দেখুন।

নোট করুন যে সম্পাদনাযোগ্য ক্ষেত্রগুলির ইনপুট বৈধতা এবং পার্শ্ব প্রতিক্রিয়া সৃষ্টির জন্য তাদের নিজস্ব ইভেন্ট শ্রোতা রয়েছে৷

ইভেন্টের ধরন

পৃথক ঘটনা সম্পর্কে তথ্যের জন্য রেফারেন্স ডকুমেন্টেশন পড়ুন.

ডেমো

ইভেন্টগুলির সাথে আপনি যে দুর্দান্ত জিনিসগুলি করতে পারেন তার একটি উদাহরণের জন্য, আপনি মিরর ডেমোটি পরীক্ষা করে দেখতে পারেন৷ এই ডেমোতে দুটি ব্লকলি ওয়ার্কস্পেস রয়েছে যা ইভেন্ট ব্যবহার করে সিঙ্কে রাখা হয়।