WorkspaceSvg 类
用于工作区的类。这是一个屏幕区域,您可以选择使用垃圾桶、滚动条、气泡和拖动功能。
Signature:
export declare class WorkspaceSvg extends Workspace implements IASTNodeLocationSvg
扩展: Workspace
构造函数
构造函数 | 修饰符 | 说明 |
---|---|---|
(构造函数)(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() | 尽可能缩放这些砌块,使其适合工作区。 |