blockly > WorkspaceSvg

WorkspaceSvg 類別

工作區類別。這個畫面上的區域可讓您選用垃圾桶、捲軸、對話框和拖曳項目。

Signature:

export declare class WorkspaceSvg extends Workspace implements IASTNodeLocationSvg 

擴充: Workspace

實作: IASTNodeLocationSvg

建構函式

建構函式 修飾符 說明
(建構函式)(選項) 建構 WorkspaceSvg 類別的新例項

屬性

屬性 修飾符 類型 說明
configureContextMenu ((menuOptions: ContextMenuOption[], e: Event) => void) | null 開發人員可以定義這個函式,將自訂選單選項新增至工作區的內容選單,或編輯工作區建立的選單選項組合。
keyboardAccessibilityMode boolean 如果鍵盤無障礙模式已開啟,則為「true」,否則為「false」。
已轉譯 boolean SVG 工作區的算繪狀態。針對無頭工作區傳回 false,針對 WorkspaceSvg 的執行個體傳回 true。
scale 號碼 目前的體重計。
捲軸 ScrollbarPair | 空值 這個工作區的捲軸 (如果有的話)。
scrollX 號碼

目前的水平捲動偏移 (以像素為單位),相對於工作區來源。

建議您考慮各種檢視畫面,並將畫布移至該檢視畫面下方。畫布向右移動時,這個值會成為正值,檢視畫面則變成畫布的左側。畫布向左移動時,這個值會成為負值,而檢視畫面現在是畫布的右側「看到」。

這個值令人困惑的是,這個值不可以,而且不可以包含絕對左偏移值。這是因為這個值是用來計算 viewLeft 值。

「 viewLeft」是相對於工作區來源 (但以像素單位表示)。工作區來源是指工作區的左上角 (至少啟用時)。該區塊將從區塊 lyDiv 的左上角轉移,不會移至工具箱下方。

工作區啟用後,viewLeft 和工作區來源位於同一個 X 位置。隨著畫布往右滑至檢視畫面下方的值 (scrollX) 值變為正數,ViewLeft 會變得比工作區原點呈負值 (想像在畫布移動時,畫布起點會以一個圓點顯示在畫布上滑動)。

因此,如果 scrollX 包含絕對左側,這會以「取消轉移」工作區來源的方式。這表示 ViewLeft 會是區塊 lyDiv 的左側邊緣,而非工作區的左側邊緣。

scrollY 號碼

目前垂直捲動偏移 (以像素為單位),相對於工作區來源。

建議您考慮各種檢視畫面,並將畫布移至該檢視畫面下方。隨著畫布向下移動,這個值會成為正值,而檢視畫面現在「看見」畫布的上半部。畫布往上移動時,這個值會成為負值,且檢視畫面會「看到」畫布的下半部。

這個值會讓使用者感到困惑,就是這個值並無限制,而且不得包含 絕對頂端偏移。這是因為這個值會用於計算 viewTop 值。

viewTop 與工作區來源的相對關係 (但以像素為單位)。工作區來源是指工作區的左上角 (至少啟用時)。該區塊將從區塊 lyDiv 的左上角轉移,不會移至工具箱下方。

工作區啟用後,viewTop 和工作區來源位於同一個 Y 位置。隨著畫布往底部滑出 (scrollY) 值會呈正值,ViewTop 則會與工作區原點相關 (工作區起點的圖片為一個圓點,在畫布移動時向下滑動)。

因此,如果 ScrollY 必須納入絕對頂端,系統就會以「取消轉移」工作區來源的方式執行這項動作。也就是說, viewTop 會是區塊 lyDiv 的上緣,而非工作區的頂端邊緣。

startScrollX 號碼 以像素單元為單位捲動時,水平捲動值。
startScrollY 號碼 以像素單元為單位捲動時,垂直捲動的值。
svgBackground_ SVGElement
svgBlockCanvas_ SVGElement
svgBubbleCanvas_ SVGElement
svgGroup_ SVGElement
themeManager_ protected ThemeManager
垃圾桶 垃圾桶 | null 工作區的垃圾桶 (如果有的話)。
zoomControls_ ZoomControls | 空值

方法

方法 修飾符 說明
addTopBlock(block) 將區塊新增至主要區塊清單。
addTopBoundedElement(element) 將受限元素新增至最上方的邊界元素清單。
addTopComment(comment) 將留言新增至熱門留言清單。
centerOnBlock(id, blockOnly) 捲動工作區,將工作區置於指定區塊的中心。如果區塊下方堆疊了其他區塊,除非 blockOnly 為 true,否則工作區將會位於堆疊的中心。
cleanUp() 將資料欄中的所有區塊排序,清理工作區。
clear() 處理工作區中的所有區塊,並進行最佳化以防止大小調整。
createDom(opt_backgroundClass, injectionDiv) 建立工作區 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。
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() getter for isVisible
markFocused() 將這個工作區標示為目前聚焦的主要工作區。
moveDrag(e) 追蹤這個工作區中物件的拖曳情形。
newBlock(prototypeName, opt_id) 取得新建立的區塊。
paste(state) 將提供的區塊或工作區註解貼到工作區。不會檢查物件是否仍有剩餘容量,應在呼叫此方法之前完成。
recordDragTargets() 建立一份清單,列出這個工作區的所有刪除區域。
refreshTheme() 更新主題後,重新整理工作區的所有區塊。
registerButtonCallback(key, func) 註冊與指定鍵相關聯的回呼函式,用於在快顯檔案中的按鈕和標籤點擊。舉例來說,XML 指定的按鈕應透過呼叫 prepareButtonCallback("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 標示為髒汙。
updateToolbox(toolboxDef) 修改現有工具箱上的區塊樹狀結構。
zoom(x, y, amount) 以指定 (x, y) 座標為基準,放大或縮小工作區。
zoomCenter(type) 放大或縮小以檢視畫面中央的區塊。
zoomToFit() 盡可能將建塊縮放成適合工作區的大小。