翻譯|使用教程|編輯:楊鵬連|2021-05-18 11:24:08.360|閱讀 335 次
概述:GoJS是一款功能強(qiáng)大,快速且輕量級的流程圖控件。本文介紹了GoJS API參考手冊中GoJS類別索引-類裝飾的具體內(nèi)容。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
GoJS是一款功能強(qiáng)大,快速且輕量級的流程圖控件,可幫助你在JavaScript 和HTML5 Canvas程序中創(chuàng)建流程圖,且極大地簡化您的JavaScript / Canvas 程序。
相關(guān)內(nèi)容推薦
流程圖控件GoJS教程:內(nèi)置GraphObject類各指數(shù)介紹(一)
流程圖控件GoJS教程:內(nèi)置GraphObject類各指數(shù)介紹(二)
流程圖控件GoJS教程:內(nèi)置GraphObject類各指數(shù)介紹(三)
流程圖控件GoJS教程:內(nèi)置GraphObject類各指數(shù)介紹(四)
流程圖控件GoJS教程:內(nèi)置GraphObject類各指數(shù)介紹(五)
流程圖控件GoJS教程:內(nèi)置GraphObject類各指數(shù)介紹(六)
bind
bind(binding: Binding): void
將此GraphObject上的屬性的數(shù)據(jù)綁定添加到數(shù)據(jù)對象上的屬性。調(diào)用此方法很不尋常-當(dāng)您將Binding的實例傳遞給它時,GraphObject.make會為您調(diào)用此方法。
復(fù)制該對象后,請勿添加,修改或刪除任何綁定。
在“數(shù)據(jù)綁定”的“簡介”頁面上閱讀有關(guān)Binding的更多信息。
參數(shù)
binding: Binding
cloneProtected
cloneProtected(copy: GraphObject): void
將屬性從該對象復(fù)制到給定的對象,該對象必須是同一類。這被稱為副本。可以重寫此方法。
對于添加到GraphObject繼承類的子類中的每個屬性,在此方法中,應(yīng)將其值分配給復(fù)制的對象。出于性能方面的考慮,應(yīng)this 以相同的順序為構(gòu)造函數(shù)設(shè)置所有相同的屬性。
例如,讓我們定義一個自定義Link類并添加兩個屬性:
function CustomLink() { go.Link.call(this); this._someNewProperty = 17; this._someNewProperty2 = []; // an Array } go.Diagram.inherit(CustomLink, go.Link); CustomLink.prototype.cloneProtected = function() { // Always call the base method in an override // In TypeScript you would use: super.cloneProtected(copy); go.Link.prototype.cloneProtected.call(this, copy); // assign every new property to the copy: copy._someNewProperty = this._someNewProperty; copy._someNewProperty2 = this._someNewProperty2.slice(0); // make a copy of the Array }這樣可以確保GraphObjects及其子類的副本是真實的復(fù)制品。考慮對于引用對象的屬性,是否應(yīng)共享引用或是否也應(yīng)復(fù)制該對象值,從而減少復(fù)制的深度。上面通過復(fù)制屬性值(即數(shù)組)來演示了這一點,以便CustomLink的副本不會共享對數(shù)組的修改。根據(jù)其目的,可能需要進(jìn)一步復(fù)制Array項目。
Virtual copy
copy(): GraphObject
創(chuàng)建此GraphObject的深層副本并返回它。此方法與對簡單GraphObject(例如Shape,TextBlock和Picture)的克隆相同。對于Panel,此方法復(fù)制它包含的GraphObjects的可視樹。
Static defineBuilder
defineBuilder(name: string, func: (a: any[]) => ObjectData): void
該靜態(tài)函數(shù)定義了GraphObject.make可以用來構(gòu)建對象的命名函數(shù)。調(diào)用此名稱后,可以將名稱用作GraphObject.make的第一個參數(shù)。名稱區(qū)分大小寫。
第二個參數(shù)必須是一個函數(shù),該函數(shù)返回一個新創(chuàng)建的對象,通常是GraphObject。該對象通常是一個面板,其中包含一個新創(chuàng)建的GraphObjects可視樹。該函數(shù)接收一個Array作為其唯一參數(shù),該Array包含正在傳遞給GraphObject.make的所有參數(shù),可以對其進(jìn)行修改以更改GraphObject.make接收的參數(shù)。
預(yù)定義的制造商名稱包括:"Button","TreeExpanderButton","SubGraphExpanderButton", "PanelExpanderButton",和"ContextMenuButton"。這些構(gòu)建器的實現(xiàn)由 Extensions目錄中的Buttons.js提供。
參數(shù)
name: string
大寫的名稱;不得為""或"None"
func: (a: any[]) => ObjectData
它接受一個GraphObject.make參數(shù)數(shù)組并返回一個新對象
getDocumentAngle
getDocumentAngle(): number
返回以文檔坐標(biāo)表示的對象繪制的有效角度,該角度被歸一化為0到360之間。
基本上,這會將由該角度聲明的所有旋轉(zhuǎn)及其所有包含面板(包括零件)的角度相加。
getDocumentBounds
getDocumentBounds(result?: Rect): Rect
返回此對象邊界的文檔坐標(biāo)中的Rect值。如果此GraphObject是Part,則rect將與其實際的bounds相同。
參數(shù)
Optional result: Rect
修改并返回的可選Rect。
getDocumentPoint
getDocumentPoint(local: Point | Spot, result?: Point): Point
返回此對象范圍內(nèi)給定Spot或局部坐標(biāo)中Point的文檔坐標(biāo)中的Point。
例如,對于這樣的Node實例:
myDiagram.nodeTemplate = $(go.Node, "Auto", $(go.Shape, "RoundedRectangle", new go.Binding("fill", "color")), $(go.TextBlock, { name: "TB", margin: 3 }, new go.Binding("text", "key")));其中節(jié)點被定位在100, 200,
node.findObject("TB").getDocumentPoint(go.Spot.Center)可以返回大約在的點122, 213。
getDocumentScale
getDocumentScale(): number
返回以文檔坐標(biāo)表示的對象繪制的總比例。
基本上,它將這個比例與其所有包含面板(包括零件)的比例相乘。
getLocalPoint
getLocalPoint(p: Point, result?: Point): Point
給定文檔坐標(biāo)中的Point,則返回本地坐標(biāo)中的新Point。
例如,如果您的鼠標(biāo)事件的InputEvent.documentPoint為at 122, 213,并且您的Node的位置為100, 200,則 node.getLocalPoint(e.documentPoint)可能返回Point的Point 22, 13。對于名為“ TB”的節(jié)點內(nèi)的GraphObject,
node.findObject("TB").getLocalPoint(e.documentPoint)15.7, 6.7如果該“ TB”對象位于Node邊界內(nèi)的某個位置,則可以返回at處的Point 。
Optional result: Point
修改并返回的可選Point。
Returns Point
局部坐標(biāo)中的對應(yīng)Point。
isContainedBy
isContainedBy(panel: GraphObject): boolean
如果此對象是給定面板的元素,則可能是間接的。
例如,如果此GraphObject在部件內(nèi)部,但本身本身不是部件, obj.isContainedBy(obj.part)則應(yīng)為true。
參數(shù)
panel: GraphObject
Returns boolean
如果此對象包含在給定的面板中,或者包含在給定面板中的另一個面板中,則為true;如果為真,則為true;否則為true。如果參數(shù)為null或不是Panel,則返回false 。
isEnabledObject
isEnabledObject(): boolean
如果該對象位于不是Panel.isEnabled的任何Panel內(nèi),或者它本身是一個禁用的面板,則此謂詞為false 。這將忽略可見和可拾取的屬性。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: