数値フィールドには 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
は数値にキャストする必要があります。指定されていない場合は 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
を受け取って、number
、null
、または undefined
を返す必要があります。
次に、値が奇数か偶数かに応じて、値を 0 または 1 に変更するバリデータの例を示します。
function(newValue) {
return newValue % 2;
}