blockly > BlockSvg

BlockSvg 類別

區塊 SVG 表示法的類別。通常不會直接呼叫,建議使用 workspace.newBlock()。

Signature:

export declare class BlockSvg extends Block implements IBoundedElement, IContextMenu, ICopyable<BlockCopyData>, IDraggable, IDeletable, IFocusableNode 

擴充: Block

實作項目: IBoundedElementIContextMenuICopyable<BlockCopyData>、IDraggableIDeletableIFocusableNode

建構函式

建構函式 修飾符 說明
(constructor)(workspace, prototypeName, opt_id) 建構 BlockSvg 類別的新例項

屬性

屬性 修飾符 類型 說明
COLLAPSED_WARNING_ID

static

readonly

(未聲明) 提供「已收合的警告」警告的 ID。讓我們移除「已收合的警告」警告,而不移除屬於該區塊的任何警告。
customContextMenu? (p1: Array<ContextMenuOption | LegacyContextMenuOption>) => void (選用)
分解? (p1: Workspace) => BlockSvg (選用)
height 數字 這個區塊的高度,不包括上方或下方的任何陳述式區塊。高度以工作區單位表示。
INLINE

static

readonly

(未聲明) 用於識別要內嵌顯示的資料列。請勿與 Blockly.inputTypes 發生衝突。
mutator MutatorIcon | null 積木的變異器圖示 (如有)。
nextConnection RenderedConnection
outputConnection RenderedConnection
previousConnection RenderedConnection
rendered readonly (未聲明) 這個區塊是否為 BlockSVG?
saveConnections? (rootBlock: BlockSvg) => void

(選用) 這個選用方法會儲存與這個區塊連結的區塊記錄,以便在重新組合 (重新設定) 這個區塊後還原這些區塊。通常會記錄變異器彈出式視窗中屬性的連結區塊,以便在重組這個區塊後,重新排列這些元件區塊時,自動重新排列這個區塊上對應的連結區塊。

為確保儲存的連線資訊為最新狀態,MutatorIcon 會安排事件監聽器,在突變器浮動視窗開啟時,以及這個區塊的工作區發生變更時,呼叫這個方法。

style BlockStyle
width 數字 這個區塊的寬度,包括任何已連結的值區塊。寬度以工作區單位表示。
workspace WorkspaceSvg

方法

方法 修飾符 說明
addClass(className) 為這個區塊的 SVG 群組新增 CSS 類別。
addIcon(icon)
addSelect() 在區塊中加入「選取」視覺效果,但不會實際選取區塊或觸發事件。
appendInput(input)
bringToFront(blockOnly) 將這個方塊移至可見工作區的前方。 標記不會遵守 z-index,因此 SVG 會按照 DOM 中的順序算繪這些標記。將這個區塊放在區塊群組的 內,即可在任何其他區塊上方算繪。請謹慎使用,因為這個方法會重新排序 DOM 節點,因此耗用大量資源。
bumpNeighbours()

將未連線的方塊撞開。

如果兩個並未實際連線的方塊在畫面上對齊,會造成使用者混淆,因此不應發生這種情況。

calculateContextMenuLocation(e) protected 取得要顯示這個區塊內容選單的位置。如果點選了區塊,請使用點選位置;否則請使用區塊欄位的位置。
canBeFocused() 請參閱 IFocusableNode.canBeFocused。
checkAndDelete() 刪除區塊並隱藏無用資料。如果區塊位於彈出式視窗中,則不會遭到刪除。這會從內容選單和鍵盤快速鍵呼叫,做為完整的刪除動作。如果從工作區捨棄的方塊不需要執行彈出式視窗檢查、處理事件分組或隱藏無用方塊,請直接使用 block.dispose()
dispose(healStack, animate) 處置這個積木。
disposeInternal() 處置這個區塊,但不執行頂端區塊所需的事項。例如觸發 UI 效果、移除節點等。
drag(newLoc, e) 將方塊拖曳至指定位置。
endDrag(e) 結束區塊的拖曳作業。
generateContextMenu(e) protected 為這個區塊生成內容選單。
getBoundingRectangle() 傳回描述這個區塊和下方任何堆疊區塊維度的定界框座標。座標系統:工作區座標。
getBoundingRectangleWithoutChildren() 傳回描述這個區塊本身尺寸的定界框座標。座標系統:工作區座標。
getChildren(ordered) 找出直接巢狀內嵌在這個區塊中的所有區塊。包括值和陳述式輸入內容,以及任何後續陳述式。輸出分頁或任何先前的陳述式中的連線除外。區塊可依位置排序 (由上至下)。
getColour() 取得區塊的顏色。
getColourSecondary() 取得區塊的次要顏色。
getColourTertiary() 取得區塊的第三種顏色。
getFocusableElement() 請參閱 IFocusableNode.getFocusableElement。
getFocusableTree() 請參閱 IFocusableNode.getFocusableTree。
getNextBlock() 傳回直接連結至這個區塊的下一個陳述式區塊。
getPreviousBlock() 傳回與先前連線相連的區塊。
getRelativeToSurfaceXY() 以工作區單位傳回這個區塊左上角的座標,相對於繪圖表面的原點 (0,0)。如果區塊位於工作區,(0, 0) 是工作區座標系統的原點。這項限制不會因工作區規模而異。
getStyle() 傳回用於設定這個區塊樣式的 BlockStyle 物件。
getSvgRoot() 傳回 SVG 的根節點,如果不存在則傳回 null。
initSvg() 建立並初始化區塊的 SVG 呈現方式。可以多次呼叫。
isCopyable() 傳回這個區塊是否可複製。
isMovable() 傳回這個區塊是否可移動。
jsonInit(json)
markDirty() 通知這個區塊的每個輸入內容,將其欄位標示為已變更。需要重新算繪的欄位稱為髒欄位。
moveBy(dx, dy, reason) 以相對位移量移動區塊。
moveNumberedInputBefore(inputIndex, refIndex) 將編號輸入內容移至這個區塊的其他位置。
moveTo(xy, reason) 將方塊移至特定位置。
onNodeBlur() 請參閱 IFocusableNode.onNodeBlur。
onNodeFocus() 請參閱 IFocusableNode.onNodeFocus。
removeClass(className) 從這個區塊的 SVG 群組中移除 CSS 類別。
removeIcon(type)
removeInput(name, opt_quiet) 從這個方塊中移除輸入內容。
removeSelect() 從區塊中移除「選取」視覺效果,但不會實際取消選取或觸發事件。
render() 根據內容和設定,立即排版及重排區塊。
revertDrag() 將方塊移回拖曳開始時的位置。
scheduleSnapAndBump() 貼齊格線,然後在下一次算繪結束時,將相鄰的方塊移開。
select() 選取這個方塊。以視覺化方式醒目顯示區塊。
setCollapsed(collapsed) 設定是否要摺疊區塊。
setColour(colour) 變更方塊的顏色。
setDeletable(deletable) 如果無法刪除積木,請新增 blocklyNotDeletable 類別;如果可以刪除積木,請移除類別
setDisabledReason(disabled, reason) 新增或移除封鎖功能可能停用的原因。如果區塊有任何停用原因,則該區塊本身會視為停用。封鎖功能可能會因多個獨立原因而同時停用,例如使用者手動停用封鎖功能,或封鎖功能無效。
setDragStrategy(dragStrategy) 為這個區塊設定拖曳策略。
setEditable(editable) 設定這個區塊是否可編輯。
setHighlighted(highlighted) 設定是否要醒目顯示區塊。區塊醒目顯示功能通常用於以視覺化方式標示目前執行的區塊。
setInputsInline(newBoolean) 設定值輸入內容的排列方式為水平或垂直。
setMovable(movable) 設定這個方塊是否可移動。
setMutator(mutator) 為這個區塊提供變異器對話方塊。
setNextStatement(newBoolean, opt_check) 設定這個積木底部是否可接上其他積木。
setOutput(newBoolean, opt_check) 設定這個方塊是否會傳回值。
setPreviousStatement(newBoolean, opt_check) 設定這個區塊是否可以鏈結到另一個區塊的底部。
setStyle(blockStyleName) 設定區塊的樣式和顏色值。
setWarningText(text, id) 設定這個區塊的警告文字。
snapToGrid() 將這個方塊對齊最近的格線點。
startDrag(e) 開始拖曳區塊。
toCopyData() 編碼區塊以供複製。
toFlyoutInfo() 傳回這個區塊的表示法,可在彈出式視窗中顯示。
translate(x, y) 方法是為區塊的 SVG 轉換屬性設定平移,藉此轉換區塊。
unselect() 取消選取這個區塊。取消醒目顯示區塊。