Un campo de variables almacena una cadena como su valor y una cadena como su texto. El value es un ID de una variable, mientras que el texto es el nombre de una variable.
Campo variable
Campo variable con editor abierto
Campo variable en el bloque contraído
Creación
Sin tipo
JSON
{
"type": "example_variable_untyped",
"message0": "variable: %1",
"args0": [
{
"type": "field_variable",
"name": "FIELDNAME",
"variable": "x"
}
]
}
JavaScript
Blockly.Blocks['example_variable_untyped'] = {
init: function() {
this.appendDummyInput()
.appendField('variable:')
.appendField(new Blockly.FieldVariable('x'), 'FIELDNAME');
}
};
Escritos
JSON
{
"type": "example_variable_typed",
"message0": "variable: %1",
"args0": [
{
"type": "field_variable",
"name": "FIELDNAME",
"variable": "x",
"variableTypes": ["Number", "String"],
"defaultType": "Number"
}
]
}
JavaScript
Blockly.Blocks['example_variable_typed'] = {
init: function() {
this.appendDummyInput()
.appendField('variable:')
.appendField(new Blockly.FieldVariable(
'X',
null,
['Number', 'String'],
'Number'
), 'FIELDNAME');
}
};
El constructor de variables recibe un nombre de variable opcional, un nombre validador, un array opcional de variables tipos predeterminados y uno opcional predeterminado.
- El nombre de la variable debe ser una cadena. Este será el nombre del variable inicial que contiene el campo. Si es nulo o indefinido, un nombre único de configuración.
- Los tipos de variables deben ser un array de cadenas. Esto le indica al campo qué tipos de variables puede contener el campo (es decir, qué tipos de variables a agregar al menú desplegable). Si es nula o indefinida, todos los tipos de variables aceptarse (y agregarse al menú desplegable).
- El tipo predeterminado debe ser una cadena. Se usará para crear la el modelo de variable inicial del campo. Si este campo está definido, se debe incluir en el array de tipos de variables. Si es nulo o indefinido, este valor se establece de forma predeterminada. a una cadena vacía, lo que significa que la variable inicial se escribirá de manera flexible.
→ Para más información sobre la escritura estricta, consulta Verificaciones de tipos.
Serialización
JSON
El JSON de un campo de variable se ve de la siguiente manera:
{
"fields": {
"FIELDNAME": {
"id": "QJD^+@[RVIwbLSZoDb:V"
}
}
}
Donde FIELDNAME
es una cadena que hace referencia a un campo de variable.
El valor es el ID de la variable a la que hace referencia el campo.
Si usas este campo en la caja de herramientas, también puedes especificar el nombre y (opcional) escribir directamente, ya que no habrá ninguna variable disponible para referencia.
{
"fields": {
"FIELDNAME": {
"name": "my_variable",
"type": "string"
}
}
}
XML
El XML de un campo variable se ve así:
<field name="VARIABLE" id="QJD^+@[RVIwbLSZoDb:V" variabletype="">name</field>
- El atributo
name
del nodo contiene una cadena que hace referencia a un campo de variable. - El atributo
id
del nodo contiene el ID de la variable a la que pertenece el campo referencias. - El atributo
variabletype
del nodo contiene el tipo de variable. Elvariabletype
sigue las mismas reglas que el parámetro de tipo predeterminado del constructor. - El texto interno del nodo es el nombre de la variable. El valor del texto interno sigue las mismas reglas que el parámetro del nombre de variable del constructor.
Crea un validador de variables
El valor de un campo de variable es una cadena, así que cualquier validador debe aceptar una cadena y
muestra una cadena, null
o undefined
.
Este es un ejemplo de un validador que solo acepta variables predefinidas como opciones de estado. Estas variables deberían definirse con el Workspace.createVariable la función cuando se carga el espacio de trabajo.
function(newValue) {
var validIds = ['Worf', 'Riker', 'Picard'];
if (validIds.indexOf(newValue) == -1) {
return null;
}
return newValue;
}