گسترش یک زمینه موجود

به منظور گسترش یک فیلد موجود، باید یک فیلد داخلی (مثلاً FieldTextInput ، FieldColour ) را زیر کلاس قرار دهید و سپس بخشی از آن را مطابق با نیازهای خود تغییر دهید. برخی از بخش‌های یک فیلد که می‌توانید تغییر دهید عبارتند از:

اگر می‌خواهید یک فیلد سفارشی ایجاد کنید که نیازی به رفتار از هیچ فیلد داخلی نداشته باشد، باید Field زیر کلاس قرار دهید.

پسوندهای رایج

اکثر فیلدهای سفارشی یکی از این سه نوع را گسترش می دهند:

  • ورودی متن : اگر می‌خواهید کاربرانتان در فیلد شما تایپ کنند، باید FieldTextInput گسترش دهید.
  • Number : اگر می‌خواهید شماره‌ای را ذخیره کنید، باید FieldNumber گسترش دهید.
  • Dropdown : اگر می‌خواهید یک فهرست کشویی ایجاد کنید، اما می‌خواهید مدلی متفاوت از مدل پیش‌فرض رشته یا تصویر ذخیره کند، باید 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 و ثبت نام در ایجاد یک فیلد سفارشی را ببینید.