数値フィールド

数値フィールドでは、数値は value として、文字列は text として保存されます。value は、作成時にフィールドに指定された制約で定義されている有効な数値です。テキストは、エディタに入力された任意の文字列にできます。

数値の項目

「number:」というラベルのブロックと、100 に設定された数値フィールド。

エディタが開いている数値フィールド

編集中のフィールドを含む同じブロック。

閉じたブロックの数値フィールド

同じブロックを閉じた状態。「number: 100」というラベルが付いており、右端がギザギザになっているため、閉じていることがわかります。

作成

JSON

{
  "type": "example_number",
  "message0": "number: %1",
  "args0": [
    {
      "type": "field_number",
      "name": "FIELDNAME",
      "value": 100,
      "min": 0,
      "max": 100,
      "precision": 10
    }
  ]
}

JavaScript

Blockly.Blocks['example_number'] = {
  init: function() {
    this.appendDummyInput()
        .appendField("number:")
        .appendField(new Blockly.FieldNumber(100, 0, 100, 10), 'FIELDNAME');
  }
};

数値コンストラクタは、次の引数を取ります。

value は数値にキャストする必要があります。指定しない場合、0 が使用されます。

シリアル化

JSON

数値フィールドの JSON は次のようになります。

{
  "fields": {
    "FIELDNAME": 0
  }
}

ここで、FIELDNAME は数値フィールドを参照する文字列で、value はフィールドに適用する値です。値はコンストラクタの値と同じルールに従います。

XML

数値フィールドの XML は次のようになります。

<field name="FIELDNAME">0</field>

field ノードの name 属性には、数値フィールドを参照する文字列が含まれ、ノードの内部 text はフィールドに適用する value です。内部テキスト値は、コンストラクタ値と同じルールに従います。

制約

制約は、フィールド定義で設定するか、setConstraints 関数を使用して設定できます。

最小値

min 値は、フィールドに含めることが許可される最小値または最も負の値を設定します。

最大値

max 値は、フィールドに含めることが許可される最大値または最も正の値を設定します。

端数処理

precision は、値を精度の倍数に丸めます。これにより、フィールドで .01、10、42 などの倍数のみを受け付けるようにできます。

一般的な制約

正の数

フィールドで正の数値のみを強制的に受け入れるには、min 値を 1 に設定します。

整数

フィールドに整数のみを強制的に受け入れるには、precision を 1 に設定します。

数値バリデータの作成

数値フィールドの値は数値であるため、すべてのバリデータは number を受け入れて、numbernull、または undefined を返す必要があります。

次の例は、値が奇数か偶数かによって値を 0 または 1 に変更するバリデータです。

function(newValue) {
  return newValue % 2;
}

バリデータの動作を示すアニメーション GIF。ユーザーが 10 と入力して別の場所をクリックすると、フィールドは 0 に設定されます。ユーザーが 11 と入力して別の場所をクリックすると、フィールドは 1 に設定されます。