Un moteur de rendu dans Blockly contrôle la forme d'un bloc, y compris sa hauteur, sa marge intérieure, son épaisseur de bordure et la forme de connexion.
Moteurs de rendu personnalisés
Si vous souhaitez personnaliser la forme des blocs, vous devez créer un moteur de rendu personnalisé. Pour en savoir plus sur ce processus, suivez l'atelier de programmation ou lisez la documentation de référence. Il peut être utile de lire le code de l'un des moteurs de rendu intégrés de Blockly pour comprendre leur fonctionnement.
Pour créer un moteur de rendu personnalisé, procédez comme suit:
- Définissez un nouveau moteur de rendu. Vous pouvez sous-classer la classe de moteur de rendu de base ou l'un des moteurs de rendu existants en fonction de votre point de départ.
- Remplacez les parties à modifier.
- Par exemple, pour ajouter une marge intérieure aux blocs, vous pouvez sous-classer un
ConstantProvider
(de nouveau, le moteur de rendu de base ou tout moteur de rendu existant) et remplacer la constante pertinente. Toutes les autres valeurs restent identiques à celles de la classe de base que vous avez choisie. - Dans votre sous-classe
Renderer
personnalisée, vous devez connecter la nouvelle classeConstantProvider
. Ignorez la fonctionmakeConstants_
pour renvoyer une nouvelle instance de votreConstantProvider
personnalisé au lieu de la classe de base. - Suivez le même processus pour remplacer d'autres classes telles que
PathObject
ouDrawer
.
- Par exemple, pour ajouter une marge intérieure aux blocs, vous pouvez sous-classer un
Enregistrez votre moteur de rendu:
Blockly.blockRendering.register('custom_renderer', CustomRenderer);
Utilisez votre moteur de rendu dans votre application:
Blockly.inject('blocklyDiv', { renderer: 'custom_renderer' });
Moteurs de rendu intégrés
Blockly fournit plusieurs moteurs de rendu prédéfinis. Vous pouvez les utiliser tels quels ou les utiliser comme base d'un moteur de rendu personnalisé.
- geras (par défaut)
- thrasos (version plus moderne des geras)
- zelos (griffe)
- minimalist (classes de base du moteur de rendu)
Pour utiliser l'un de ces moteurs de rendu, transmettez son nom aux options d'injection:
Blockly.inject('blocklyDiv', {
renderer: 'thrasos'
});
Pour les sous-classer, étendez la ou les classes appropriées :
class CustomRenderer extends Blockly.geras.Renderer {}
class CustomConstantProvider extends Blockly.geras.ConstantProvider {}