Un procesador en Blockly controla la forma de un bloque, lo que incluye la altura, el relleno, el grosor del borde y la forma de conexión.
Procesadores personalizados
Si deseas personalizar la forma de los bloques, deberás crear un procesador personalizado. Para obtener más información sobre este proceso, completa el codelab o lee la documentación de referencia. Puede resultar útil leer el código de cualquiera de los procesadores integrados de Blockly para comprender cómo funcionan.
Para crear un procesador personalizado, debes hacer lo siguiente:
- Define un nuevo procesador. Puedes subclasificar la clase de procesador base o cualquiera de los procesadores existentes según la ubicación desde la que desees comenzar.
- Anula las partes que quieras cambiar.
- Por ejemplo, para agregar más padding a los bloques, puedes crear una subclase de
ConstantProvider
(de nuevo, ya sea la base o cualquier procesador existente) y anular la constante relevante. Todos los demás valores permanecerán iguales que la clase base elegida. - En tu subclase
Renderer
personalizada, debes conectar la nueva claseConstantProvider
. Anula la funciónmakeConstants_
para mostrar una instancia nueva de tuConstantProvider
personalizado en lugar de la clase base. - Sigue el mismo proceso cuando anules otras clases, como
PathObject
oDrawer
.
- Por ejemplo, para agregar más padding a los bloques, puedes crear una subclase de
Registra el procesador:
Blockly.blockRendering.register('custom_renderer', CustomRenderer);
Usa el procesador en tu aplicación:
Blockly.inject('blocklyDiv', { renderer: 'custom_renderer' });
Procesadores integrados
Blockly proporciona varios procesadores compilados previamente. Puedes usarlos sin modificaciones o como base de un procesador personalizado.
- geras (predeterminado)
- thrasos (versión más moderna de las geras)
- zelos (similar a Scratch)
- minimalist (las clases de procesador base)
Para usar uno de estos renderizadores, pasa el nombre a las opciones de inserción:
Blockly.inject('blocklyDiv', {
renderer: 'thrasos'
});
Para subclasificarlas, extiende las clases correspondientes:
class CustomRenderer extends Blockly.geras.Renderer {}
class CustomConstantProvider extends Blockly.geras.ConstantProvider {}