Campos numéricos

Un campo numérico almacena un número como su value y una cadena como su text. Su value siempre es un número válido, según lo definido por las restricciones que se le asignan al campo en el momento de su creación. Su texto puede ser cualquier cadena ingresada en su editor.

Campo numérico

Un bloque con la etiqueta “número” y un campo numérico establecido en 100.

Campo de número con el editor abierto

El mismo bloque con el campo que se está
editando.

Campo numérico en un bloque colapsado

El mismo bloque después de contraerse. Tiene la etiqueta "número: 100" y un borde derecho irregular para mostrar que está contraída.

Creación

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

El constructor de números toma lo siguiente:

value debe transmitirse a un número. De lo contrario, se usará 0.

Serialización

JSON

El JSON de un campo numérico se ve de la siguiente manera:

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

En el que FIELDNAME es una cadena que hace referencia a un campo numérico y el valor es el valor que se aplicará al campo. El valor sigue las mismas reglas que el valor del constructor.

XML

El XML de un campo numérico se ve de la siguiente manera:

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

El atributo name del nodo field contiene una cadena que hace referencia a un campo numérico, y el text interno del nodo es el value que se aplicará al campo. El valor de texto interno sigue las mismas reglas que el valor del constructor.

Limitaciones

Las restricciones se pueden establecer en la definición del campo o con la función setConstraints.

Valor mínimo

El valor min establece el valor más pequeño o más negativo que puede contener el campo.

Valor máximo

El valor de max establece el valor más grande o más positivo que puede contener el campo.

Redondeo

precision redondea el valor al múltiplo de precisión más cercano. Esto se puede usar para que el campo solo acepte múltiplos de .01, 10, 42, etcétera.

Restricciones comunes

Números positivos

Para forzar que tu campo solo acepte números positivos, establece el valor de min en 1.

Números enteros

Para forzar a tu campo a que solo acepte números enteros, establece precision en 1.

Crea un validador de números

El valor de un campo numérico es un número, por lo que cualquier validador debe aceptar un number y mostrar un number, null o undefined.

Este es un ejemplo de un validador que cambia el valor a 0 o 1 según si el valor era impar o par.

function(newValue) {
  return newValue % 2;
}

GIF animado que muestra el validador en funcionamiento. Cuando el usuario escribe 10 y hace clic en otro lugar, el campo se establece en 0. Cuando el usuario escribe 11 y hace clic en otro lugar, el campo se establece en 1.