blockly > BlockSvg

BlockSvg 类

用于表示块的 SVG 的类。通常不直接调用,建议使用 workspace.newBlock()。

Signature:

export declare class BlockSvg extends Block implements IBoundedElement, IContextMenu, ICopyable<BlockCopyData>, IDraggable, IDeletable, IFocusableNode 

扩展自Block

实现IBoundedElementIContextMenuICopyable<BlockCopyData>、IDraggableIDeletableIFocusableNode

构造函数

构造函数 修饰符 说明
(constructor)(workspace, prototypeName, opt_id) 构造 BlockSvg 类的新实例

属性

属性 修饰符 类型 说明
COLLAPSED_WARNING_ID

static

readonly

(未声明) 用于提供“折叠警告”警告的 ID。允许我们移除“折叠的警告”警告,而不会移除属于该块的任何警告。
customContextMenu? (p1: Array<ContextMenuOption | LegacyContextMenuOption>) => void (可选)
分解? (p1: Workspace) => BlockSvg (可选)
height 数值 相应代码块的高度,不包括任何上方的或下方的语句代码块。高度以工作区单位表示。
INLINE

static

readonly

(未声明) 用于标识要内嵌呈现的行的常量。不与 Blockly.inputTypes 发生冲突。
mutator MutatorIcon | null 块的 mutator 图标(如果有)。
nextConnection RenderedConnection
outputConnection RenderedConnection
previousConnection RenderedConnection
rendered readonly (未声明) 相应块是否为 BlockSVG?
saveConnections? (rootBlock: BlockSvg) => void

(可选)一种可选方法,用于保存与此块连接的块的记录,以便在重新组合(重新配置)此块后可以恢复这些块。通常会在突变器弹出式菜单中的块上记录连接的块,以便在重组此块后,重新排列这些组件块会自动重新排列此块上相应连接的块。

为了使保存的连接信息保持最新状态,MutatorIcon 会安排一个事件监听器,以便在 mutator 弹出式菜单打开且相应块的工作区发生更改时调用此方法。

style BlockStyle
width 数值 相应代码块的宽度,包括所有连接的值代码块。宽度以工作区单位表示。
工作区 WorkspaceSvg

方法

方法 修饰符 说明
addClass(className) 为相应块的 SVG 组添加 CSS 类。
addIcon(icon)
addSelect() 向块添加视觉“选择”效果,但实际上不会选择该块或触发事件。
appendInput(input)
bringToFront(blockOnly) 将此块移到可见工作区的前面。 标记不遵循 z-index,因此 SVG 会按照它们在 DOM 中的顺序呈现它们。通过将此代码块放置在代码块组的 内,它将显示在任何其他代码块的顶部。请谨慎使用,此方法开销很大,因为它会重新排序 DOM 节点。
bumpNeighbours()

使未连接的块错位。

实际上未连接的两个块不应在屏幕上巧合地对齐,因为这会给最终用户造成困惑。

calculateContextMenuLocation(e) protected 获取用于显示相应块的上下文菜单的位置。如果点击了相应块,则使用点击的位置;否则,使用基于相应块字段的位置。
canBeFocused() 请参阅 IFocusableNode.canBeFocused。
checkAndDelete() 删除块并隐藏干扰数据。如果块位于弹出式菜单中,则不会被删除。此方法会从上下文菜单和键盘快捷键中调用,作为完整的删除操作。如果您要处置工作区中的某个块,并且不需要执行弹出式菜单检查、处理事件分组或隐藏干扰项,请直接使用 block.dispose()
dispose(healStack, animate) 处置此块。
disposeInternal() 处置此块,但不执行顶部块所需的操作。例如,是否触发界面效果、移除节点等。
drag(newLoc, e) 将块拖动到指定位置。
endDrag(e) 结束对代码块的拖动。
generateContextMenu(e) protected 为此块生成上下文菜单。
getBoundingRectangle() 返回一个边界框的坐标,该边界框描述了相应块及其下方堆叠的任何块的尺寸。坐标系:工作区坐标。
getBoundingRectangleWithoutChildren() 返回描述此块本身尺寸的边界框的坐标。坐标系:工作区坐标。
getChildren(ordered) 查找直接嵌套在此块中的所有块。包括值和陈述输入,以及任何后续陈述。不包括输出标签页上的任何连接或任何前面的语句。块可选择按位置(从上到下)排序。
getColour() 获取块的颜色。
getColourSecondary() 获取块的辅助颜色。
getColourTertiary() 获取块的三级颜色。
getFocusableElement() 请参阅 IFocusableNode.getFocusableElement。
getFocusableTree() 请参阅 IFocusableNode.getFocusableTree。
getNextBlock() 返回与此块直接关联的下一个语句块。
getPreviousBlock() 返回与上一个连接关联的块。
getRelativeToSurfaceXY() 返回此块相对于绘图表面的原点 (0,0) 的左上角坐标(以工作区单位表示)。如果块位于工作区中,则 (0, 0) 是工作区坐标系的原点。此值不会随工作区规模而变化。
getStyle() 返回用于设置相应块样式的 BlockStyle 对象。
getSvgRoot() 返回 SVG 的根节点,如果不存在,则返回 null。
initSvg() 创建并初始化块的 SVG 表示形式。可以多次调用。
isCopyable() 返回相应块是否可复制。
isMovable() 返回相应块是否可移动。
jsonInit(json)
markDirty() 通知此块上的每个输入,以将其字段标记为脏。脏字段是指需要重新渲染的字段。
moveBy(dx, dy, reason) 按相对偏移量移动块。
moveNumberedInputBefore(inputIndex, refIndex) 将带编号的输入移至此块中的其他位置。
moveTo(xy, reason) 将块移动到某个位置。
onNodeBlur() 请参阅 IFocusableNode.onNodeBlur。
onNodeFocus() 请参阅 IFocusableNode.onNodeFocus。
removeClass(className) 从相应块的 SVG 群组中移除 CSS 类。
removeIcon(type)
removeInput(name, opt_quiet) 从相应块中移除输入。
removeSelect() 从块中移除视觉“选择”效果,但实际上不会取消选择该块或触发事件。
render() 根据块的内容和设置立即进行布局和重排。
revertDrag() 将块移回拖动开始时的位置。
scheduleSnapAndBump() 贴靠到网格,然后在下一次渲染结束时将相邻的块移开。
select() 选择此块。以醒目的方式突出显示代码块。
setCollapsed(collapsed) 设置块是否处于折叠状态。
setColour(colour) 更改块的颜色。
setDeletable(deletable) 当 block 不可删除时,添加 blocklyNotDeletable 类;当 block 可删除时,移除该类
setDisabledReason(disabled, reason) 添加或移除了可能导致屏蔽功能被停用的原因。如果某个块有任何停用原因,则该块本身将被视为已停用。屏蔽可能会因多种独立原因而同时被停用,例如用户手动停用屏蔽或屏蔽无效。
setDragStrategy(dragStrategy) 为此块设置拖动策略。
setEditable(editable) 设置相应块是否可编辑。
setHighlighted(highlighted) 设置是否突出显示块。代码块突出显示功能通常用于直观地标记当前正在执行的代码块。
setInputsInline(newBoolean) 设置值输入是横向排列还是纵向排列。
setMovable(movable) 设置相应块是否可移动。
setMutator(mutator) 为该代码块提供了一个 mutator 对话框。
setNextStatement(newBoolean, opt_check) 设置是否可以在此块的底部链接另一个块。
setOutput(newBoolean, opt_check) 设置此代码块是否返回值。
setPreviousStatement(newBoolean, opt_check) 设置此块是否可以链接到另一块的底部。
setStyle(blockStyleName) 设置块的样式和颜色值。
setWarningText(text, id) 设置相应块的警告文本。
snapToGrid() 将此块贴靠到最近的网格点。
startDrag(e) 开始拖动块。
toCopyData() 对块进行编码以供复制。
toFlyoutInfo() 返回可在弹出式菜单中显示的相应代码块。
translate(x, y) 通过在块的 SVG 的 transform 属性上设置平移来转换块。
unselect() 取消选择此块。以视觉方式取消突出显示相应代码块。