Rozszerzanie istniejącego pola

Aby rozszerzyć istniejące pole, musisz podklasować pole wbudowane (np. FieldTextInput, FieldColour), a potem dostosuj jego część do swoich potrzeb. Oto niektóre części pola, które możesz modyfikować:

Jeśli chcesz utworzyć pole niestandardowe które nie wymaga zachowania żadnego z wbudowanych pól, należy podklasę Field.

Typowe rozszerzenia

Większość pól niestandardowych stanowi rozszerzenie jednego z tych trzech typów:

  • Wprowadzanie tekstu: jeśli chcesz, aby użytkownicy wpisuje tekst w polu, rozszerz FieldTextInput
  • Numer: jeśli chcesz zapisać numer, użyj rozszerzenia FieldNumber.
  • Menu: jeśli chcesz utworzyć menu, ale chcesz, aby zawierało ono inny model niż domyślny ciąg znaków lub model obrazu, rozszerz FieldDropdown.
    • Uwaga: przed rozwinięciem opcji FieldDropdown sprawdź, czy wartość opcje dostosowania nie spełnią Twoich potrzeb.

W pewnych okolicznościach możesz zdecydować się na rozszerzenie innego typu pola. Dla: przykład FieldLabelSerializable obejmuje: 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 dla pole niestandardowe. Podpis konstruktora podrzędnego powinien: są zazwyczaj zgodne z podpisem superkonstruktora.

JSON i rejestracja

Pole należy też zarejestrować raz:

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

i zaimplementuj implementację fromJson w klasie, aby działała z format JSON:

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

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