기존 필드를 확장하려면 내장된 필드 (예: FieldTextInput
, FieldColour
)를 서브클래스로 만들고 그 일부를 필요에 맞게 수정해야 합니다.
수정할 수 있는 필드 부분은 다음과 같습니다.
기본 제공 필드의 동작이 필요하지 않은 커스텀 필드를 생성하려면 Field
를 서브클래스로 분류해야 합니다.
일반적인 확장 프로그램
대부분의 맞춤 필드는 다음 세 가지 유형 중 하나를 확장합니다.
- 텍스트 입력: 사용자가 필드에 입력하도록 하려면
FieldTextInput
를 확장해야 합니다. - 숫자: 숫자를 저장하려면
FieldNumber
를 확장해야 합니다. - 드롭다운: 드롭다운을 만들고 싶지만 기본 문자열이나 이미지 모델과 다른 모델을 저장하려면
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);
그리고 JSON 형식과 호환되도록 클래스에 fromJson
구현을 제공합니다.
static fromJson(options) {
const value = Blockly.utils.parsing.replaceMessageReferences(options.value);
return new MySubclassName(value);
}
필드 등록에 대한 자세한 내용은 커스텀 필드 만들기의 JSON 및 등록 섹션을 참조하세요.