WorkspaceSvg 类
用于工作区的类。屏幕上的这个区域包含可选的垃圾桶、滚动条、气泡和拖动功能。
Signature:
export declare class WorkspaceSvg extends Workspace implements IASTNodeLocationSvg
扩展:Workspace
构造函数
构造函数 | 修饰符 | 说明 |
---|---|---|
(构造函数)(选项) | 构造 WorkspaceSvg 类的新实例 |
属性
媒体资源 | 修饰符 | 类型 | 说明 |
---|---|---|---|
configureContextMenu | ((menuOptions: ContextMenuOption[], e: Event) => void) | null | 开发者可以定义此函数,将自定义菜单选项添加到工作区的上下文菜单中,或修改工作区创建的一组菜单选项。 | |
keyboardAccessibilityMode | boolean | 如果已开启键盘无障碍模式,则为 true,否则为 false。 | |
已呈现 | boolean | SVG 工作区的渲染状态。对于无头工作区,返回 false ;对于 WorkspaceSvg 实例,返回 true。 |
|
缩放 | number | 当前比例。 | |
滚动条 | ScrollbarPair | null | 此工作区的滚动条(如果存在)。 | |
scrollX | number | 相对于工作区原点的当前水平滚动偏移量(以像素为单位)。 设想一下视图,以及在该视图下方移动的画布会很有帮助。随着画布向右移动,该值会变成正数,视图现在可以看到画布的左侧。随着画布向左移动,该值会变成负值,视图现在可以看到画布的右侧。 令人困惑的一点是,该值不包含,并且不得包含 absoluteLeft 偏移。这是因为它用于计算 viewLeft 值。 viewLeft 相对于工作区原点(尽管以像素为单位)。工作区原点位于工作区的左上角(至少在启用状态下)。它会从 blocklyDiv 的左上角偏移,以免位于工具箱下方。 启用工作区后,viewLeft 和工作区原点位于相同的 X 位置。当画布在视图下方向右侧滑动时,此值 (scrollX) 变得更加正,而 viewLeft 相对于工作区原点变得更加负(假设画布上的原点随着画布移动而向右滑动)。 因此,如果 scrollX 包含 absoluteLeft,这将以某种方式“取消偏移”工作区原点。这意味着 viewLeft 表示 blocklyDiv 的左边缘,而非工作区的左边缘。 |
|
scrollY | number | 相对于工作区原点的当前垂直滚动偏移量(以像素为单位)。 设想一下视图,以及在该视图下方移动的画布会很有帮助。随着画布向下移动,该值会变成正数,视图现在可以看到画布的上半部分。随着画布向上移动,该值会变成负值,视图将“看到”画布的下半部分。 这个值令人困惑的是,该值不包含且不得包含 absoluteTop 偏移。这是因为它用于计算 viewTop 值。 viewTop 以工作区原点为参照物(但以像素为单位)。工作区原点位于工作区的左上角(至少在启用状态下)。它会从 blocklyDiv 的左上角偏移,以免位于工具箱下方。 启用工作区后,viewTop 和工作区原点位于同一个 Y 位置。当画布向底部滑动时,此值 (scrollY) 变得更加正,而 viewTop 相对于工作区原点变得更加负(即画布原点中的图片随着画布移动而向下滑,作为画布上的一个点)。 因此,如果 scrollY 包含 absoluteTop,这会以某种方式“平移”工作区原点。这意味着,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。 | |
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) | 获取新创建的代码块。 | |
粘贴(状态) | 将提供的块或工作区注释粘贴到工作区中。不会检查对象是否还有剩余容量,应在调用此方法之前完成。 | |
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) | 通过更新变量映射中变量的名称来重命名变量。更新浮出控件以立即显示重命名的变量。 | |
渲染 | 在工作区中渲染所有块。 | |
resize() | 调整所有工作区 Chrome(工具箱、回收站、滚动条等)的大小和位置当某些更改需要重新计算回收站的尺寸和位置、缩放、工具箱等(例如调整窗口大小)时,应调用此方法。 | |
scrollCenter() | 将工作区居中。 | |
setResizeHandlerWrapper(handler) | 请保存大小调整处理程序数据,以便我们稍后将其删除。 | |
setResizesEnabled(enabled) | 更新此工作区是否启用大小调整功能。启用后,工作区将适时调整大小。如果停用,工作区在重新启用之前不会调整大小。用于避免在批量操作期间调整大小,以提升性能。 | |
setScale(newScale) | 设置工作区的缩放比例。 | |
setTheme(theme) | 设置工作区主题对象。如果未传递主题,则默认使用 Classic 主题。 |
|
setVisible(isVisible) | 切换工作区的可见性。目前仅适用于主工作区。 | |
startDrag(e, xy) | 开始跟踪此工作区中对象的拖动。 | |
translate(x, y) | 将此工作区转换为新坐标。 | |
updateInverseScreenCTM() | 将反向屏幕 CTM 标记为脏。 | |
updateToolbox(toolboxDef) | 修改现有工具箱中的块树。 | |
zoom(x, y, 数量) | 以给定 (x, y) 坐标为中心或相对于指定 (x, y) 坐标缩放工作区。 | |
zoomCenter(type) | 通过放大或缩小,以视图中心为中心来缩放块。 | |
zoomToFit() | 如果可能,请缩放各图块,使其适合工作区。 |