blockly >WorkspaceSvg

WorkspaceSvg 类

用于工作区的类。这是一个屏幕区域,您可以选择使用垃圾桶、滚动条、气泡和拖动功能。

Signature:

export declare class WorkspaceSvg extends Workspace implements IASTNodeLocationSvg 

扩展Workspace

实现IASTNodeLocationSvg

构造函数

构造函数 修饰符 说明
(构造函数)(options) 构造 WorkspaceSvg 类的新实例

属性

属性 修饰符 类型 说明
configureContextMenu ((menuOptions: ContextMenuOption[], e: 事件) => void) |null 开发者可以定义此函数,以将自定义菜单选项添加到工作区的上下文菜单中,或修改工作区创建的一组菜单选项。
keyboardAccessibilityMode 布尔值 如果键盘无障碍模式已开启,则为 true,否则为 false。
已呈现 布尔值 SVG 工作区的渲染状态。对于无头工作区,返回 false;对于 WorkspaceSvg 实例,返回 true。
扩缩 number 当前体重秤。
滚动条 ScrollbarPair |null 此工作区的滚动条(如果存在)。
scrollX number

相对于工作区原点的当前水平滚动偏移量(以像素为单位)。

不妨考虑一个视图,以及在该视图下方移动的画布。当画布向右移动时,该值会变得更正,并且视图现在是“看到”画布左侧当画布向左移动时,该值会变得更负,视图现在是“看到”画布右侧

关于此值的令人困惑之处在于,它不包含且不得包含 绝对 Left 偏移。这是因为它用于计算 viewLeft 值。

viewLeft 相对于工作区原点(虽然采用像素单位)。工作区原点位于工作区的左上角(至少在启用该工作区时是如此)。它会从 blocklyDiv 的左上角移动,以免位于工具箱下方。

启用工作区后,viewLeft 和工作区原点位于相同的 X 位置。当画布在视图下方向右滑动时,该值 (scrollX) 会变得更为正,并且 viewLeft 会相对于工作区原点变得更负(将工作区原点想象为画布上的一个点随着画布移动而向右滑动)。

因此,如果 scrollX 包含 绝对 Left,这将在一定程度上“取消移位”工作区源。这意味着 viewLeft 将表示 blocklyDiv 的左边缘,而不是工作区的左边缘。

scrollY number

相对于工作区原点的当前垂直滚动偏移量(以像素为单位)。

不妨考虑一个视图,以及在该视图下方移动的画布。当画布向下移动时,该值会变得更正,且视图现在是“看到”画布的上半部分当画布向上移动时,此值会变得更为负,且视图为“看到”画布的下半部分

关于此值,令人困惑的一点是,它不包含,也不能包含 绝对 Top 偏移量。这是因为它用于计算 viewTop 值。

viewTop 相对于工作区原点(虽然采用像素单位)。工作区原点位于工作区的左上角(至少在启用该工作区时是如此)。它会从 blocklyDiv 的左上角移动,以免位于工具箱下方。

启用工作区后,viewTop 和工作区源站位于同一 Y 位置。当画布向底部滑动时,此值 (scrollY) 会变得更为正,并且 viewTop 相对于工作区原点会变得更负值(工作区原点中的图片显示为画布上的点随着画布移动而向下滑)。

因此,如果 scrollY工作区源。这意味着 viewTop 表示 blocklyDiv 的上边缘,而不是工作区的上边缘。

startScrollX number 开始滚动时的水平滚动值(以像素为单位)。
startScrollY number 开始滚动时的垂直滚动值(以像素为单位)。
svgBackground_ SVGElement
svgBlockCanvas_ SVGElement
svgBubbleCanvas_ SVGElement
svgGroup_ SVGElement
themeManager_ protected ThemeManager
垃圾桶 垃圾箱 |null 工作区的垃圾桶(如果有)。
zoomControls_ ZoomControls |null

方法

方法 修饰符 说明
addTopBlock(block) 在顶部代码块列表中添加一个代码块。
addTopBoundedElement(element) 向顶部有边界的元素列表添加一个边界元素。
addTopComment(comment) 在热门评论列表中添加评论。
centerOnBlock(id, blockOnly) 滚动工作区,使之以给定块为中心。如果此块下方有堆叠的其他块,则工作区将位于堆栈的中心,除非 blockOnly 为 true。
cleanUp() 对某一列中的所有块进行排序,以清理工作区。
clear() 处理工作区中的所有块,同时进行优化以防止调整大小。
createDom(opt_backgroundClass, injectDiv) 创建工作区 DOM 元素。
createVariable(name, opt_type, opt_id) 使用给定名称创建新变量。更新浮出控件以立即显示新变量。
deleteVariableById(id) 按传入的 ID 删除变量。更新浮出控件,以立即显示该变量已被删除。
dispose() 处置此工作区。解除与所有 DOM 元素的关联,以防止内存泄漏。
getAllBlocks(ordered) 在工作区中找到所有组成要素。您可选择按位置对区块进行排序;自上而下(略有 LTR 或 RTL 偏差)。
getAudioManager() 获取此工作区的音频管理器。
getBlockById(id) 在此工作区中找到具有指定 ID 的代码块。
getBlocksBoundingBox() 计算工作区上各砌块的边界框。坐标系:工作区坐标。
getBubbleCanvas() 获取可构成气泡表面的 SVG 元素。
getButtonCallback(key) 获取与给定键相关联的回调函数,该函数用于点击浮出控件中的按钮和标签。
getCanvas() 获取构成绘图表面的 SVG 元素。
getComponentManager() 获取此工作区的组件管理器。
getCursor() 此工作区的光标。
getDragTarget(e) 返回指针事件所在的拖动目标。
getFlyout(opt_own) 与此工作区关联的浮出控件的 getter。该浮出控件可能归工具箱或工作区所有,具体取决于工具箱配置。如果没有浮出控件,则该值为 null。
getGrid() 获取此工作区的网格对象;如果没有对象,则返回 null。
getInverseScreenCTM() 反色屏幕 CTM 的 getter。
getLayerManager()
getMarkerManager() 获取此工作区的标记管理器。
getMetricsManager() 获取此工作区的指标管理器。
getParentSvg() 获取包含此工作区的 SVG 元素。注意:我们假设仅在将工作区注入 DOM 后才会调用此方法。
getRenderer() 获取附加到此工作区的块渲染程序。
getRootWorkspace()
getScale() 获取工作区的缩放比例。如果工作区有父级,我们会调用父级来获取工作区比例。
getSvgGroup() 返回工作区的 SVG 组。
getTheme() 获取工作区主题对象。
getToolbox() 与此工作区关联的工具箱的 getter(如果存在)。
getToolboxCategoryCallback(key) 获取与给定键关联的回调函数,用于填充此工作区中的自定义工具箱类别。
getTopBlocks(ordered) 查找顶级块并返回它们。您可选择按位置对区块进行排序;自上而下(略有 LTR 或 RTL 偏差)。
getTopBoundedElements() 查找顶级有界元素并将其返回。
getWidth() 返回工作区的水平偏移量。适用于 XML 中的 LTR/RTL 兼容性。
hideChaff(onlyClosePopups) 关闭提示、上下文菜单、下拉菜单选项等
hideComponents(onlyClosePopups) 隐藏所有可自动隐藏的组件(例如浮出控件、垃圾桶以及任何用户注册的组件)。
highlightBlock(id, opt_state) 在工作区中突出显示或取消突出显示某个块。块突出显示通常用于直观地标记当前正在执行的块。
isDraggable() 此工作区是否可拖动?
isDragging() 用户当前正在拖动内容块还是滚动浮出控件/工作区?
isMovable()

此工作区是否可移动?

这意味着,用户可以通过输入重新定位工作区的 X、Y 坐标。这可以通过滚动条、滚轮、拖动,或者通过使用滚轮或双指张合进行缩放(因为缩放操作以鼠标位置为中心)。这不包括使用缩放控件进行缩放,因为 X、Y 坐标是以编程方式确定的。

isMovableHorizontally() 此工作区是否可水平移动?
isMovableVertically() 此工作区是否可以垂直移动?
isVisible() isVisible 的 getter
markFocused() 将此工作区标记为当前聚焦的主工作区。
moveDrag(e) 跟踪此工作区中对象的拖动情况。
newBlock(prototypeName, opt_id) 获取新创建的块。
newComment(id) 获取新创建的评论。
recordDragTargets() 列出此工作区的所有删除区域。
refreshTheme() 更新主题后,刷新工作区中的所有区块。
registerButtonCallback(key, func) 针对浮出控件中的按钮和标签注册与给定键相关联的回调函数。例如,由 XML 指定的按钮应与调用 registerButtonCallback("CREATE_VARIABLE", yourCallbackFunction)匹配。
registerToolboxCategoryCallback(key, func) 注册与给定键关联的回调函数,用于填充此工作区中的自定义工具箱类别。请参见变量和过程类别示例。
removeButtonCallback(key) 移除对浮出控件中按钮的点击的回调。
removeToolboxCategoryCallback(key) 针对工具箱中的自定义类别名称的点击移除回调。
removeTopBlock(block) 从顶部块列表中移除块。
removeTopBoundedElement(element) 从顶部有边界的元素列表中移除有边界的元素。
removeTopComment(comment) 从热门评论列表中移除某条评论。
renameVariableById(id, newName) 通过在变量映射中更新变量名称来重命名变量。更新浮出控件,以立即显示重命名的变量。
render() 渲染工作区中的所有块。
resize() 调整所有 Workspace Chrome(工具框、回收站、滚动条等)的大小和位置当某些内容发生变化(例如调整窗口大小)且需要重新计算回收站、缩放、工具箱等大小时,应调用此方法。
scrollCenter() 将工作区居中。
setResizeHandlerWrapper(handler) 保存调整大小处理程序数据,以便我们稍后在处理时将其删除。
setResizesEnabled(enabled) 更新此工作区是否启用了调整大小功能。如果启用,工作区将适时调整大小。如果停用,则在重新启用之前,工作区不会调整大小。用于避免在批处理操作期间调整大小,以提高性能。
setScale(newScale) 设置工作区的缩放比例。
setTheme(theme) 设置工作区主题对象。如果未传递主题,则默认使用 Classic 主题。
setVisible(isVisible) 切换工作区的可见性。目前仅适用于主工作区。
startDrag(e, xy) 开始在此工作区中跟踪对象的拖动情况。
translate(x, y) 将此工作区转换为新坐标。
updateInverseScreenCTM() 将反向屏幕 CTM 标记为 dirty。
updateToolbox(toolboxDef) 修改现有工具箱中的块树。
zoom(x, y, 数量) 相对于给定 (x, y) 坐标,以给定 (x, y) 坐标为中心缩放工作区。
zoomCenter(type) 通过放大或缩小,在视图中心对方块进行缩放。
zoomToFit() 尽可能缩放这些砌块,使其适合工作区。