Un renderer in Blockly controlla la forma di un blocco, inclusi altezza, spaziatura interna, spessore del bordo e forma della connessione.
Renderer personalizzati
Se vuoi personalizzare la forma dei blocchi, devi creare un renderingr personalizzato. Per saperne di più su questo processo, completa il codelab o leggi la documentazione di riferimento. Potrebbe essere utile leggere il codice per qualsiasi renderer integrato di Blockly per comprendere come funzionano.
Per creare un renderer personalizzato, devi:
- Definisci un nuovo renderer. Puoi sottoclasse la classe del renderer di base o qualsiasi renderer esistente a seconda di dove vuoi iniziare.
- Esegui l'override delle parti che vuoi modificare.
- Ad esempio, per aggiungere ulteriore spaziatura interna ai blocchi, puoi sottoclasse un
ConstantProvider
(di nuovo, quello di base o qualsiasi renderer esistente) e sostituire la costante pertinente. Tutti gli altri valori rimarranno gli stessi della classe base scelta. - Nella tua sottoclasse
Renderer
personalizzata, devi collegare il nuovo corsoConstantProvider
. Esegui l'override della funzionemakeConstants_
per restituire una nuova istanza della classeConstantProvider
personalizzata anziché della classe base. - Segui la stessa procedura quando esegui l'override di altre classi, come
PathObject
oDrawer
.
- Ad esempio, per aggiungere ulteriore spaziatura interna ai blocchi, puoi sottoclasse un
Registra il renderer:
Blockly.blockRendering.register('custom_renderer', CustomRenderer);
Utilizza il renderer nell'applicazione:
Blockly.inject('blocklyDiv', { renderer: 'custom_renderer' });
Renderer integrati
Blockly fornisce diversi renderer predefiniti. Puoi usarli così come sono o come base di un renderer personalizzato.
- geras (predefinita)
- thrasos (rivisitazione più moderna dei gera)
- zelos (Tipo di graffio)
- minimalista (le classi del renderer di base)
Per utilizzare uno di questi renderer, inserisci il nome nelle opzioni di inserimento:
Blockly.inject('blocklyDiv', {
renderer: 'thrasos'
});
Per sottoclasserli, estendi le classi appropriate:
class CustomRenderer extends Blockly.geras.Renderer {}
class CustomConstantProvider extends Blockly.geras.ConstantProvider {}