数値フィールド

数値フィールドは、数値を 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 は数値フィールドを参照する文字列で、値はフィールドに適用する値です。値は、コンストラクタの値と同じルールに従います。

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 に設定されます。