توسيع حقل حالي

من أجل توسيع أحد الحقول الموجودة، يجب عليك فئة فرعية حقل مدمج (على سبيل المثال 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 والتسجيل. في إنشاء حقل مخصص.