# 创建自定义渲染器
提示
如果你还没读过渲染器概念文档,或还没做过官方 codelab(custom renderer codelab (opens new window)),建议先完成。
要创建自定义渲染器,需要继承 Renderer 类。
class CustomRenderer extends Blockly.blockRendering.Renderer {
constructor() {
super();
}
}
不做额外改动时,基类渲染器效果如下:

也可以继承某个内置渲染器,再定向覆盖其中一部分能力:
class CustomRenderer extends Blockly.thrasos.Renderer {
constructor() {
super();
}
}
内置渲染器见渲染器总览。
# 继承其他渲染器组件
块的具体形状由渲染器子组件共同决定。
Renderer 默认提供可用的组件实现,所以你可以只改一个组件而不必重写全部。
例如你只想改连接形状,可以仅覆盖常量提供器。
对应做法见下一页连接形状。
# 覆盖工厂方法
当你继承了某个子组件后,还要覆盖 Renderer 对应工厂方法,让组件装配为你的子类实现。
可覆盖的方法有:
makeConstants_(opens new window)makeRenderInfo_(opens new window)makePathObject(opens new window)makeDrawer_(opens new window)
# 注册渲染器
创建完成后需要注册渲染器,并在注入配置中通过字符串名称启用它。
Blockly.blockRendering.register('custom_renderer', CustomRenderer);
const workspace = Blockly.inject(blocklyDiv, {
renderer: 'custom_renderer',
});
配置项结构见创建工作区。