Rozszerzanie istniejącego pola

Aby rozszerzyć istniejące pole, musisz podklasyfikować wbudowane pole (np.FieldTextInput, FieldColour), a potem zmodyfikować jego część zgodnie ze swoimi potrzebami. Niektóre części pola, które możesz modyfikować, to:

Jeśli chcesz utworzyć pole niestandardowe, które nie wymaga działania z żadnego wbudowanego pola, wybierz podklasę Field.

Typowe rozszerzenia

Większość pól niestandardowych stanowi rozwinięcie jednego z tych 3 typów pól:

  • Wprowadzanie tekstu: jeśli chcesz, aby użytkownicy mogli wpisywać tekst w polu, zastosuj rozszerzenie FieldTextInput.
  • Liczba: jeśli chcesz zapisać numer, wstaw rozszerzenie FieldNumber.
  • Menu: jeśli chcesz utworzyć menu, ale chcesz w nim przechowywać inny model niż domyślny ciąg znaków lub model graficzny, musisz rozszerzyć pole FieldDropdown.
    • Uwaga: zanim rozszerzysz zakres FieldDropdown, sprawdź, czy opcje dostosowywania w polu menu nie odpowiadają Twoim potrzebom.

W pewnych okolicznościach możesz chcieć rozszerzyć pole innego typu. Na przykład FieldLabelSerializable rozszerza zakres FieldLabel.

Podklasy

import * as Blockly from 'blockly';

export class MyCustomTextField extends Blockly.FieldTextInput {

  constructor(value, validator, config) {
    super(value, validator, config);
  }
}

Konstruktor podklasy pola wygląda bardzo podobnie do konstruktora pola niestandardowego. Podpis podkonstruktora powinien być zwykle taki sam jak podpis superkonstruktora.

JSON i rejestracja

Pamiętaj też, aby zarejestrować to pole raz:

Blockly.fieldRegistry.register('my_custom_text_field', MyCustomTextField);

i udostępnij w klasie implementację fromJson, tak aby działała z formatem JSON:

static fromJson(options) {
  const value = Blockly.utils.parsing.replaceMessageReferences(options.value);
  return new MySubclassName(value);
}

Więcej informacji o rejestrowaniu pola znajdziesz w sekcji JSON i rejestracja w artykule Tworzenie pola niestandardowego.