ব্লকলি আপনাকে সংশ্লিষ্ট ব্লকলি ক্লাসগুলি প্রতিস্থাপন করে নির্দিষ্ট কার্যকারিতা কাস্টমাইজ করতে দেয়।
প্রতিস্থাপনযোগ্য ক্লাস
নিম্নলিখিত ব্লকলি ক্লাসগুলি প্রতিস্থাপন করা যেতে পারে:
| ব্লকলি ক্লাস | ইন্টারফেস | রেজিস্ট্রি টাইপ নাম |
|---|---|---|
Blockly.dragging.Dragger | Blockly.IDragger | blockDragger |
Blockly.ConnectionChecker | Blockly.IConnectionChecker | connectionChecker |
Blockly.InsertionMarkerPreviewer | Blockly.IConnectionPreviewer | connectionPreviewer |
Blockly.HorizontalFlyout | Blockly.IFlyout | flyoutsHorizontalToolbox |
Blockly.VerticalFlyout | Blockly.IFlyout | flyoutsVerticalToolbox |
Blockly.MetricsManager | Blockly.IMetricsManager | metricsManager |
Blockly.Toolbox | Blockly.IToolbox | toolbox |
Blockly.VariableMap | Blockly.IVariableMap | variableMap |
Blockly.VariableModel | Blockly.IVariableModel | -- |
কিভাবে একটি রেন্ডারার প্রতিস্থাপন করতে হয় সে সম্পর্কে তথ্যের জন্য, কাস্টম রেন্ডারার তৈরি করুন দেখুন।
একটি প্রতিস্থাপন ক্লাস তৈরি করুন
একটি প্রতিস্থাপন শ্রেণী তৈরি করতে, সংশ্লিষ্ট ইন্টারফেসে ফাংশনগুলি বাস্তবায়ন করুন। আপনি একটি নতুন ক্লাসে এই সমস্ত ফাংশন বাস্তবায়ন করতে পারেন, অথবা ব্লকলি ক্লাস প্রসারিত করতে পারেন এবং শুধুমাত্র আপনি যে ফাংশনগুলি পরিবর্তন করতে চান তা ওভাররাইড করতে পারেন। একমাত্র প্রয়োজন হল আপনি (বা বেস ক্লাস) ইন্টারফেসের সমস্ত ফাংশন বাস্তবায়ন করুন এবং ইন্টারফেসের মন্তব্যে বর্ণিত যেকোনো প্রয়োজনীয়তা মেনে চলুন।
আপনি একটি নির্দিষ্ট ইন্টারফেস প্রয়োগ করছেন এমন টাইপ চেকারকে নির্দেশ করতে, @implements {InterfaceName} JSDoc ট্যাগ (জাভাস্ক্রিপ্টে) বা implements কীওয়ার্ড (টাইপস্ক্রিপ্টে) দিয়ে আপনার ক্লাসটি টীকা করুন।
আপনার প্রতিস্থাপন ক্লাস সম্পর্কে Blockly বলুন
আপনার প্রতিস্থাপন শ্রেণী সম্পর্কে ব্লকলিকে বলার দুটি উপায় রয়েছে: এটিকে এর ধরণের (পছন্দের) ডিফল্ট শ্রেণী হিসাবে নিবন্ধন করুন বা plugins কনফিগারেশন বিকল্প ব্যবহার করে এটিকে ইনজেক্ট করুন।
ডিফল্ট হিসাবে আপনার প্রতিস্থাপন ক্লাস নিবন্ধন করুন
আপনার প্রতিস্থাপন শ্রেণী সম্পর্কে ব্লকলিকে বলার পছন্দের উপায় হল এটির প্রকারের জন্য ডিফল্ট হিসাবে নিবন্ধন করা। এটি করার জন্য, Blockly.registry.register Blockly.registry.DEFAULT করুন এবং opt_allowOverrides প্যারামিটারটিকে true সেট করুন।
Blockly.registry.register(
Blockly.registry.Type.VARIABLE_MODEL,
Blockly.registry.DEFAULT,
CustomVariableModel,
true,
);
আপনার প্রতিস্থাপন ক্লাস ইনজেকশন
আপনি plugins কনফিগারেশন বিকল্প ব্যবহার করে প্রতিস্থাপন ক্লাস ইনজেকশন করতে পারেন। এটি একটি অবজেক্ট যা রেজিস্ট্রি টাইপ নামগুলি সম্পত্তির নাম এবং প্রতিস্থাপন শ্রেণী বা নিবন্ধিত নামগুলি সম্পত্তি মান হিসাবে ব্যবহার করে।
( plugins সম্পত্তির নাম থাকা সত্ত্বেও, আপনার ক্লাসকে ব্লকলি প্রসারিত করতে ব্যবহৃত প্লাগইনগুলির মতো এনপিএম-এর মাধ্যমে প্যাকেজ এবং বিতরণ করার প্রয়োজন নেই।)
হয় Blockly.inject এ আপনার প্রতিস্থাপন ক্লাস পাস করুন:
Blockly.inject('blocklyDiv', {
plugins: {
'metricsManager': CustomMetricsManagerClass
}
}
অথবা Blockly.registry.register ব্যবহার করে আপনার ক্লাস নিবন্ধন করুন এবং Blockly.inject এ নিবন্ধিত নাম পাস করুন। আপনি যদি আপনার কনফিগারেশন বিকল্পগুলিকে বিশুদ্ধ JSON হিসাবে সংরক্ষণ করেন তবে এটি কার্যকর।
Blockly.registry.register(Blockly.registry.Type.METRICS_MANAGER, 'YOUR_NAME', CustomMetricsManagerClass);
Blockly.inject('blocklyDiv', {
plugins: {
'metricsManager': 'YOUR_NAME'
}
}