既存のフィールドを拡張する

既存のフィールドを拡張するには、組み込みフィールド(例: FieldTextInputFieldColour など)を作成し、必要に応じて一部を変更します。 変更可能なフィールドは次のとおりです。

新しいコンバージョン アクションを カスタム フィールド 組み込みフィールドからの動作が不要な場合は、Field をサブクラス化する必要があります。

一般的な拡張機能

ほとんどのカスタム フィールドは、次の 3 つのタイプのいずれかを拡張します。

  • テキスト入力: ユーザーがフィールドに入力できるようにするには、 FieldTextInput
  • 数値: 数値を保存する場合は、FieldNumber を拡張する必要があります。
  • プルダウン: プルダウンを作成するものの、別のモデルを格納する場合 デフォルトの文字列または画像モデルよりも高い場合は、FieldDropdown を拡張する必要があります。
    • 注意: FieldDropdown を拡張する前に、プルダウン フィールドの カスタマイズ オプションではニーズを満たすことができません。

状況によっては、別のフィールド タイプを拡張することが必要な場合があります。対象 例 FieldLabelSerializableFieldLabel を拡張します。

Subclassing

import * as Blockly from 'blockly';

export class MyCustomTextField extends Blockly.FieldTextInput {

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

フィールドのサブクラスのコンストラクタは、 カスタムフィールドを作成するサブコンストラクタの署名は、 通常はスーパーコンストラクタのシグネチャと一致します。

JSON と登録

また、フィールドは 1 回登録する必要があります。

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 と登録をご覧ください。 セクションをご覧ください。