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ć:
- To editor.
- To wyświetlany z blokadą.
- Tekst który zostanie wyświetlony.
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.
- Uwaga: przed rozwinięciem opcji
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.