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