Um renderizador no Blockly controla a forma de um bloco, incluindo altura, padding, espessura da borda e forma da conexão.
Renderizadores personalizados
Caso queira personalizar a forma dos blocos, crie um renderizador personalizado. Para saber mais sobre esse processo, conclua o codelab ou leia a documentação de referência. Pode ser útil ler o código de qualquer um dos renderizadores integrados do Blockly para entender como eles funcionam.
Para criar um renderizador personalizado, você precisa:
- Define um novo renderizador. Você pode criar subclasses da classe de renderizador base ou de qualquer um dos renderizadores existentes, dependendo de onde quer começar.
- Substitua as partes que você quer alterar.
- Por exemplo, para adicionar mais padding aos blocos, você pode criar uma subclasse
ConstantProvider
(novamente, o renderizador base ou existente) e substituir a constante relevante. Todos os outros valores permanecerão os mesmos da classe base escolhida. - Na subclasse
Renderer
personalizada, é necessário vincular a nova classeConstantProvider
. Substitua a funçãomakeConstants_
para retornar uma nova instância da suaConstantProvider
personalizada em vez da classe base. - Siga o mesmo processo ao substituir outras classes, como
PathObject
ouDrawer
.
- Por exemplo, para adicionar mais padding aos blocos, você pode criar uma subclasse
Registre seu renderizador:
Blockly.blockRendering.register('custom_renderer', CustomRenderer);
Use o renderizador no seu aplicativo:
Blockly.inject('blocklyDiv', { renderer: 'custom_renderer' });
Renderizadores integrados
O Blockly fornece vários renderizadores pré-criados. Você pode usá-los no estado em que se encontram ou como base de um renderizador personalizado.
- geras (padrão)
- thrasos (versão mais moderna de geras)
- zelos (semelhante a um rascunho)
- minimalist (as classes de renderizador base)
Para usar um desses renderizadores, transmita o nome para as opções de injeção:
Blockly.inject('blocklyDiv', {
renderer: 'thrasos'
});
Para criar subclasses, estenda as classes apropriadas:
class CustomRenderer extends Blockly.geras.Renderer {}
class CustomConstantProvider extends Blockly.geras.ConstantProvider {}