研究调查问卷:请告诉我们您使用 Blockly 的体验
开始调查问卷
渲染程序
Blockly 中的渲染程序可以控制块的形状,包括高度、内边距、边框厚度和连接形状。
自定义渲染程序
如果您想自定义块的形状,则需要创建自定义渲染程序。如需详细了解此过程,您可以完成 Codelab 或阅读参考文档。阅读 Blockly 任何内置渲染程序的代码以了解其工作原理可能会很有帮助。
如需创建自定义渲染程序,您需要:
- 定义一个新的渲染程序。您可以根据所需的起始位置,将基本渲染程序类或任何现有渲染程序子类化。
- 替换您想要更改的部分。
- 例如,如需向块添加更多内边距,您可以子类化
ConstantProvider
(同样,基类渲染程序或任何现有渲染程序),并替换相关常量。所有其他值都将与您选择的基类相同。
- 在自定义
Renderer
子类中,您需要连接新的 ConstantProvider
类。替换 makeConstants_
函数以返回自定义 ConstantProvider
的新实例,而不是基类。
- 替换其他类(例如
PathObject
或 Drawer
)时,请遵循相同的流程。
注册渲染程序:
Blockly.blockRendering.register('custom_renderer', CustomRenderer);
在您的应用中使用渲染程序:
Blockly.inject('blocklyDiv', {
renderer: 'custom_renderer'
});
内置渲染器
Blockly 提供了一些预构建的渲染程序。您可以按原样使用这些渲染程序,也可以将其用作自定义渲染程序的基础。
如需使用下列某个渲染程序,请将名称传递到注入选项:
Blockly.inject('blocklyDiv', {
renderer: 'thrasos'
});
如需子类化该类,请扩展相应的类:
class CustomRenderer extends Blockly.geras.Renderer {}
class CustomConstantProvider extends Blockly.geras.ConstantProvider {}
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2023-12-01。
[null,null,["最后更新时间 (UTC):2023-12-01。"],[[["Blockly uses renderers to define the visual style of blocks, including shape, padding, and connections."],["Developers can create custom renderers to modify block appearance or use pre-built options like Geras, Thrasos, Zelos, and Minimalist."],["Custom renderers involve defining a new renderer class, overriding desired properties, and registering it for use in Blockly."],["Blockly's built-in renderers can be used directly or extended to create unique block styles."]]],["Blockly's renderers determine block appearance. To create a custom renderer, define a new renderer class, optionally extending an existing one. Override components like `ConstantProvider` to alter padding or `PathObject` and `Drawer` for other changes. Register the custom renderer using `Blockly.blockRendering.register()`, and then inject it via `Blockly.inject()`. Built-in renderers (geras, thrasos, zelos, minimalist) can be used directly or extended similarly. You can see examples and documentation in the links provided.\n"]]