Ein Renderer in Blockly steuert die Form eines Blocks, einschließlich Höhe, Abstand, Rahmenstärke und Verbindungsform.
Benutzerdefinierte Renderer
Wenn Sie die Form von Blöcken anpassen möchten, müssen Sie einen benutzerdefinierten Renderer erstellen. Weitere Informationen zu diesem Vorgang finden Sie im Codelab oder in der Referenzdokumentation. Es kann hilfreich sein, den Code für einen der integrierten Renderer von Blockly zu lesen, um zu verstehen, wie sie funktionieren.
So erstellen Sie einen benutzerdefinierten Renderer:
- Definieren Sie einen neuen Renderer. Sie können entweder die Basis-Renderer-Klasse oder einen der vorhandenen Renderer ableiten, je nachdem, wo Sie beginnen möchten.
- Überschreiben Sie die Teile, die Sie ändern möchten.
- Wenn Sie beispielsweise mehr Abstand zu Blöcken hinzufügen möchten, können Sie von
ConstantProvider
abgeleitete Klassen erstellen (wieder entweder dem Basis-Renderer oder einem vorhandenen Renderer) und die relevante Konstante überschreiben. Alle anderen Werte bleiben unverändert wie die ausgewählte Basisklasse. - In der benutzerdefinierten abgeleiteten Klasse
Renderer
müssen Sie die neue KlasseConstantProvider
verknüpfen. Überschreiben Sie die FunktionmakeConstants_
, um eine neue Instanz Ihrer benutzerdefiniertenConstantProvider
anstelle der Basisklasse zurückzugeben. - Gehen Sie genauso vor, wenn Sie andere Klassen wie
PathObject
oderDrawer
überschreiben.
- Wenn Sie beispielsweise mehr Abstand zu Blöcken hinzufügen möchten, können Sie von
Registrieren Sie den Renderer:
Blockly.blockRendering.register('custom_renderer', CustomRenderer);
Verwenden Sie den Renderer in Ihrer Anwendung:
Blockly.inject('blocklyDiv', { renderer: 'custom_renderer' });
Integrierte Renderer
Blockly bietet mehrere vorgefertigte Renderer. Sie können sie unverändert oder als Basis für einen benutzerdefinierten Renderer verwenden.
- geras (Standard)
- thrasos (modernere Interpretation von Geras)
- zelos (kratzähnlich)
- minimalist (die Basis-Renderer-Klassen)
Wenn Sie einen dieser Renderer verwenden möchten, übergeben Sie den Namen an die Injection-Optionen:
Blockly.inject('blocklyDiv', {
renderer: 'thrasos'
});
Um eine Unterklasse zu erstellen, erweitern Sie die entsprechenden Klassen:
class CustomRenderer extends Blockly.geras.Renderer {}
class CustomConstantProvider extends Blockly.geras.ConstantProvider {}