Encuesta de investigación: Cuéntanos sobre tu experiencia con Blockly
Comenzar encuesta
Cómo extender un campo existente
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Para extender un campo existente, debes subclasificar un campo integrado (p. ej.,
FieldTextInput
, FieldColour
) y, luego, modifica parte de esta para que se adapte a tus necesidades.
Estas son algunas de las partes de un campo que puedes modificar:
Si quieres crear un
campo personalizado
que no necesite un comportamiento de ningún campo integrado, deberías subclasificar Field
.
Extensiones comunes
La mayoría de los campos personalizados extienden uno de estos tres tipos:
- Entrada de texto: Si deseas que los usuarios escriban en el campo, debes extender
FieldTextInput
- Número: Si deseas almacenar un número, debes extender
FieldNumber
.
- Menú desplegable: Si quieres crear un menú desplegable, pero quieres que almacene un modelo diferente.
que la cadena o el modelo de imagen predeterminados, debes extender
FieldDropdown
.
- Precaución: Antes de extender
FieldDropdown
, comprueba que el campo de menú desplegable
las opciones de personalización no pueden satisfacer tus necesidades.
En ciertas circunstancias, es posible que desees extender un tipo de campo diferente. Para
el ejemplo FieldLabelSerializable
extiende FieldLabel
.
Subclase
import * as Blockly from 'blockly';
export class MyCustomTextField extends Blockly.FieldTextInput {
constructor(value, validator, config) {
super(value, validator, config);
}
}
El constructor de la subclase de un campo es muy similar al constructor para
un campo personalizado. La firma del subconstructor debe
suelen coincidir con la firma del superconstructor.
JSON y registro
También debes registrar el campo una vez:
Blockly.fieldRegistry.register('my_custom_text_field', MyCustomTextField);
y proporcionarás una implementación de fromJson
en la clase de modo que funcione con
el formato JSON:
static fromJson(options) {
const value = Blockly.utils.parsing.replaceMessageReferences(options.value);
return new MySubclassName(value);
}
Para obtener más información sobre cómo registrar un campo, consulta el archivo JSON y registro.
en Creación de un campo personalizado.
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-04-14 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-04-14 (UTC)"],[[["To extend an existing Blockly field, subclass a built-in field like `FieldTextInput` or `FieldColour` and modify its editor, on-block display, or displayed text."],["For custom fields with unique behaviors, subclass the base `Field` class instead of extending an existing field."],["Common field extensions involve customizing text input (`FieldTextInput`), numbers (`FieldNumber`), or dropdowns (`FieldDropdown`) to meet specific needs."],["When subclassing, ensure your constructor matches the super-constructor's signature and register the field with `Blockly.fieldRegistry.register`."],["Implement the `fromJson` method in your custom field class to enable compatibility with the Blockly JSON format for serialization and deserialization."]]],["To extend an existing field, subclass a built-in field like `FieldTextInput` or `FieldColour`, modifying its editor, on-block display, or text. For unique fields, subclass `Field`. Common extensions include `FieldTextInput`, `FieldNumber`, and `FieldDropdown`. Subclass constructors should mirror the super-constructor's signature. Register the field using `Blockly.fieldRegistry.register()` and implement `fromJson` for JSON compatibility. Extending different fields such as `FieldLabelSerializable` is also possible.\n"]]