数値フィールドは、数値を 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');
}
};
数値コンストラクタは次の引数を取ります。
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
を受け取り、number
、null
、または undefined
を返す必要があります。
値が奇数か偶数かに応じて値を 0 または 1 に変更するバリデーターの例を次に示します。
function(newValue) {
return newValue % 2;
}