Mechanizm renderowania w Blockly kontroluje kształt bryły, w tym wysokość, dopełnienie, grubość obramowania i kształt połączenia.
Niestandardowe mechanizmy renderowania
Jeśli chcesz dostosować kształt bloków, musisz utworzyć niestandardowy mechanizm renderowania. Więcej informacji o tym procesie znajdziesz w ćwiczeniach z programowania lub w dokumentacji referencyjnej. Warto też przeczytać kod wbudowanych mechanizmów renderowania Blockly, aby zrozumieć, jak one działają.
Aby utworzyć niestandardowy mechanizm renderowania:
- Zdefiniuj nowy mechanizm renderowania. W zależności od tego, od czego chcesz zacząć, możesz podklasyfikować podstawową klasę mechanizmu renderowania lub dowolny dotychczasowy mechanizm renderowania.
- Zastąp fragmenty, które chcesz zmienić.
- Aby np. dodać więcej dopełnienia bloków, możesz podklasyfikować
ConstantProvider
(ponownie jako podstawowy lub dowolny istniejący mechanizm renderowania) i zastąpić odpowiednią stałą. Wszystkie inne wartości pozostaną takie same jak wybrana klasa bazowa. - W niestandardowej podklasie
Renderer
musisz połączyć nową klasęConstantProvider
. Zastąp funkcjęmakeConstants_
, aby zwrócić nową instancję niestandardowej klasyConstantProvider
zamiast klasy podstawowej. - Wykonaj te same czynności, zastępując inne klasy, takie jak
PathObject
lubDrawer
.
- Aby np. dodać więcej dopełnienia bloków, możesz podklasyfikować
Zarejestruj mechanizm renderowania:
Blockly.blockRendering.register('custom_renderer', CustomRenderer);
Użyj mechanizmu renderowania w aplikacji:
Blockly.inject('blocklyDiv', { renderer: 'custom_renderer' });
Wbudowane mechanizmy renderowania
Blockly udostępnia kilka gotowych mechanizmów renderowania. Można ich używać w postaci, w jakiej są, lub jako podstawy niestandardowego mechanizmu renderowania.
- geras (domyślnie)
- thrasos (nowoczesne podejście do gerab)
- zelos (podobne do Scratcha)
- minimalist (podstawowe klasy mechanizmu renderowania)
Aby użyć jednego z tych mechanizmów renderowania, przekaż jego nazwę do opcji wstrzykiwania:
Blockly.inject('blocklyDiv', {
renderer: 'thrasos'
});
Aby utworzyć podklasy, rozszerz odpowiednie klasy:
class CustomRenderer extends Blockly.geras.Renderer {}
class CustomConstantProvider extends Blockly.geras.ConstantProvider {}