من أجل توسيع حقل حالي، يجب عليك تصنيف حقل فرعي (مثل FieldTextInput
وFieldColour
) ثم تعديل جزء منه ليناسب احتياجاتك.
بعض أجزاء الحقل التي يمكنك تعديلها هي:
- المحرر.
- شاشة العرض أثناء الحظر.
- النص الذي تعرضه.
إذا كنت تريد إنشاء حقل مُخصص لا يحتاج إلى سلوك من أي حقل مُضمّن، يجب عليك تصنيف فئة فرعية Field
.
الإضافات الشائعة
تضيف معظم الحقول المخصّصة أحد هذه الأنواع الثلاثة:
- إدخال النص: إذا أردت أن يكتب المستخدمون في الحقل، يجب تمديد مدته
FieldTextInput
. - رقم: إذا أردت تخزين رقم، يجب تمديد مهلة
FieldNumber
. - قائمة منسدلة: إذا كنت تريد إنشاء قائمة منسدلة ولكنك تريد منها تخزين نموذج مختلف عن السلسلة التلقائية أو نموذج الصورة التلقائي، يجب تمديد
FieldDropdown
.- تحذير: قبل تمديد فترة
FieldDropdown
، تأكَّد من أنّ خيارات التخصيص في حقل القائمة المنسدلة لا يمكنها تلبية احتياجاتك.
- تحذير: قبل تمديد فترة
في ظروف معيّنة، يمكنك تمديد نوع حقل مختلف. على سبيل المثال، FieldLabelSerializable
تمتد FieldLabel
.
التصنيف الفرعي
import * as Blockly from 'blockly';
export class MyCustomTextField extends Blockly.FieldTextInput {
constructor(value, validator, config) {
super(value, validator, config);
}
}
تبدو الدالة الإنشائية للفئة الفرعية للحقل مشابهة جدًا للدالة الإنشائية لحقل مخصص. ينبغي أن يتطابق توقيع دالة الإنشاء الفرعية بشكل عام مع توقيع الدالة الإنشائية الفائقة.
JSON والتسجيل
يجب عليك أيضًا تسجيل الحقل مرة واحدة:
Blockly.fieldRegistry.register('my_custom_text_field', MyCustomTextField);
وتوفير تنفيذ الترميز fromJson
في الصف كي يكون متوافقًا مع
تنسيق JSON:
static fromJson(options) {
const value = Blockly.utils.parsing.replaceMessageReferences(options.value);
return new MySubclassName(value);
}
لمزيد من المعلومات حول تسجيل حقل، يُرجى الاطّلاع على قسم JSON والتسجيل في "إنشاء حقل مخصّص".