WorkspaceSvg 類別
適用於工作區的類別。這個螢幕區域可選用垃圾桶、捲軸、泡泡和拖曳。
Signature:
export declare class WorkspaceSvg extends Workspace implements IASTNodeLocationSvg
擴充功能: Workspace
建構函式
建構函式 | 修飾符 | 說明 |
---|---|---|
(建構函式)(選項) | 建構 WorkspaceSvg 類別的新例項 |
屬性
屬性 | 修飾符 | 類型 | 說明 |
---|---|---|---|
configureContextMenu | ((menuOptions: ContextMenuOption[], e: Event) => void) |空值 | 開發人員可以定義這個函式,藉此將自訂選單選項加入工作區的內容選單,或是編輯工作區建立的選單選項組合。 | |
keyboardAccessibilityMode | 布林值 | 如果鍵盤無障礙模式已開啟,則為「true」,否則傳回「false」。 | |
算繪 | 布林值 | SVG 工作區的轉譯狀態。針對無頭工作區傳回 false ,對 WorkspaceSvg 的執行個體傳回 true。 |
|
縮放 | 數字 | 目前規模。 | |
捲軸 | ScrollbarPair |空值 | 這個工作區的捲軸 (如有)。 | |
scrollX | 數字 | 目前水平捲動偏移 (以像素為單位) (相對於工作區來源)。 顧名思義,在檢視區塊下方以及移動的畫布上,會很有幫助。畫布向右移動時,這個值會變得比較正面,檢視畫面也變為「看見」就在畫布左側畫布向左移動時,這個值會變得負值,且檢視畫面變為「看見」就在畫布右側 這個值令人困惑,表示其不會,且不得包含絕對左移。這是因為這個欄位用於計算 viewLeft 值。 viewLeft 是相對於工作區來源 (但單位為像素單位)。工作區來源是指工作區的左上角 (至少在啟用時)。該圖示從 BlocklyDiv 的左上角開始,因此不會位於工具箱下方。 如果啟用工作區,檢視畫面左側和工作區來源位於同一個 X 位置。隨著畫布向畫面右側滑動,這個值 (scrollX) 會變得比較正數,而與工作區來源相比, viewLeft 也會變得更為負數 (假設工作區起點是畫布移動時從右邊滑動的一個點)。 因此,如果 ScrollX 包含絕對向左元素,這時候就會產生「反向移動」工作區來源這表示 viewLeft 會代表 BlocklyDiv 的左側邊緣,而不是工作區的左側邊緣。 |
|
scrollY | 數字 | 目前以像素單位為基準的垂直捲動位移 (相對於工作區來源)。 顧名思義,在檢視區塊下方以及移動的畫布上,會很有幫助。畫布向下移動時,這個值會變得比較正面,檢視畫面也變為「看見」畫布的上半部畫布往上移動,這個值會變得負值,且檢視畫面變為「看見」畫布的下半部 這個值令人困惑,表示該值沒有,且不得包含絕對 Top 偏移。這是因為系統會使用此值來計算 viewTop 值。 viewTop 與工作區來源 (採用像素單位相同) 是相對的。工作區來源是指工作區的左上角 (至少在啟用時)。該圖示從 BlocklyDiv 的左上角開始,因此不會位於工具箱下方。 啟用工作區時,檢視畫面頂端和工作區來源位於同一個 Y 位置。隨著畫布向底部滑動 (scrollY) 這個值會變得比較正數,且與工作區來源相比 (畫布原始圖片中的圖片,畫佈在畫布移動時,畫布原始圖片會隨著畫布移動時,此值會逐漸滑入底部) 的正面效果 (scrollY)。 因此,如果捲動 Y 要包含絕對頂端,這樣就會「反向移動」工作區來源這表示 viewTop 會代表 BlocklyDiv 的頂部邊緣,而不是工作區的頂端邊緣。 |
|
startScrollX | 數字 | 以像素單位為單位捲動時的水平捲動值。 | |
startScrollY | 數字 | 以像素單位為單位捲動時的垂直捲動值。 | |
svgBackground_ | SVGElement | ||
svgBlockCanvas_ | SVGElement | ||
svgBubbleCanvas_ | SVGElement | ||
svgGroup_ | SVGElement | ||
themeManager_ | protected |
ThemeManager | |
垃圾桶 | 垃圾桶 |空值 | 工作區的垃圾桶 (如有)。 | |
zoomControls_ | ZoomControls |空值 |
方法
方法 | 修飾符 | 說明 |
---|---|---|
addTopBlock(block) | 在熱門區塊清單中加入封鎖條件。 | |
addTopBoundedElement(element) | 將受限元素新增至最邊界的元素清單。 | |
addTopComment(comment) | 將留言新增至熱門留言清單。 | |
centerOnBlock(id, blockOnly) | 捲動工作區,將工作區置於指定區塊中央。如果區塊下方還有其他區塊,除非 blockOnly 為 true,否則工作區會置中顯示在堆疊中央。 | |
cleanUp() | 將資料欄中的所有區塊排序,清理工作區。 | |
clear() | 丟棄工作區中的所有區塊,並進行最佳化以防止調整大小。 | |
createDom(opt_backgroundClass, injectionDiv) | 建立 workspace 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。視工具箱設定而定,這個轉盤可能是由工具箱或工作區擁有。如果沒有起飛,將變為空值。 | |
getGrid() | 取得這個工作區的格線物件;如果沒有,則取得空值。 | |
getInverseScreenCTM() | 反轉螢幕 CTM 的 getter。 | |
getLayerManager() | ||
getMarkerManager() | 取得這個工作區的標記管理工具。 | |
getMetricsManager() | 取得這個工作區的指標管理工具。 | |
getParentSvg() | 取得含有這個工作區的 SVG 元素。注意:我們假設只有在工作區插入 DOM 後才呼叫。 | |
getRenderer() | 將區塊轉譯器附加至這個工作區。 | |
getRootWorkspace() | ||
getScale() | 取得工作區的縮放係數。如果工作區有父項,我們會呼叫父項來取得工作區調整比例。 | |
getSvgGroup() | 傳回工作區的 SVG 群組。 | |
getTheme() | 取得 Workspace 主題物件。 | |
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() | 可見的 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() | 調整所有工作區 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, amount) | 根據指定 (x, y) 座標,將工作區放大或縮小。 | |
zoomCenter(type) | 使用縮放功能,縮放畫面中央的區塊。 | |
zoomToFit() | 如果可以,請配合工作區調整方塊大小。 |