数値フィールド

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

数値フィールド

エディタを開いた番号フィールド

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

動画を作成

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');
  }
};

number コンストラクタは、以下を受け取ります。

  • オプションの value
  • オプションの min
  • max(省略可)
  • 精度(省略可)
  • オプションのvalidator

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

シリアル化

JSON

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

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

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

XML

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

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

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

制約

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

最小値

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

最大値

max 値は、フィールドに含めることができる最大または正の値です。

丸め処理

precision は、最も近い精度の倍数に値を丸めます。これを使用すると、フィールドが 0.01、10、42 などの倍数のみを受け入れるようにできます。

一般的な制約

正の数

フィールドに正の数値のみを指定する場合は、min の値を 1 に設定します。

整数

フィールドに整数のみを指定する場合は、precision を 1 に設定します。

数値バリデータの作成

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

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

function(newValue) {
  return newValue % 2;
}