به منظور گسترش یک فیلد موجود، باید یک فیلد داخلی (مثلاً 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 و ثبت نام در ایجاد یک فیلد سفارشی را ببینید.
، به منظور گسترش یک فیلد موجود، باید یک فیلد داخلی (مثلاً 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 و ثبت نام در ایجاد یک فیلد سفارشی را ببینید.