翻譯|使用教程|編輯:楊鵬連|2021-01-05 11:51:10.860|閱讀 112 次
概述:?這是所有圖形對(duì)象的抽象基類。從GraphObject繼承的類包括:Shape、TextBlock、Picture和Panel。部件類從面板類派生,節(jié)點(diǎn)類和鏈接類從面板類派生。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
GoJS是一款功能強(qiáng)大,快速且輕量級(jí)的流程圖控件,可幫助你在JavaScript 和HTML5 Canvas程序中創(chuàng)建流程圖,且極大地簡(jiǎn)化您的JavaScript / Canvas 程序。
這是所有圖形對(duì)象的抽象基類。從GraphObject繼承的類包括:Shape、TextBlock、Picture和Panel。部件類從面板類派生,節(jié)點(diǎn)類和鏈接類從面板類派生。
使用靜態(tài)函數(shù)graphject是非常常見的。為了建立一個(gè)圖形對(duì)象的可視化樹。你可以在介紹中看到很多這樣的例子,從構(gòu)建對(duì)象開始,從最小樣本開始。
由于GraphObject是一個(gè)抽象類,程序員不創(chuàng)建GraphObject本身,但是這個(gè)類定義了各種GraphObject所使用的許多屬性。
GraphObject上唯一的視覺屬性是background和areabbackground。然而,你可以通過(guò)設(shè)置可見來(lái)控制是否繪制圖形對(duì)象,或者如果你仍然希望圖形對(duì)象占據(jù)空間,可以將不透明度設(shè)置為零。此外,如果你想控制任何鼠標(biāo)或觸摸事件是否“看到”GraphObject,你可以將pickable設(shè)置為false。
要了解更多關(guān)于如何繪制的信息,請(qǐng)參見Shape、TextBlock和Picture類上的屬性。
GraphObject分級(jí)
GraphObject定義了導(dǎo)致對(duì)象自身大小不同的大多數(shù)屬性。最突出的包括:
圖形對(duì)象的大小和位置在面板
一些graphhobject屬性指導(dǎo)包含的面板如何在面板中設(shè)置對(duì)象的大小和位置。
頂級(jí)圖形對(duì)象是部分
Part是表示頂級(jí)對(duì)象的GraphObject的派生類。所有頂級(jí)圖形對(duì)象都必須是部件,節(jié)點(diǎn)、鏈接、組和裝飾都源自部件。零件的位置決定了零件在文檔坐標(biāo)中的左上角的位置。也看到部分。location,它支持基于零件中不同元素的不同位置來(lái)指定位置的方法。
有幾個(gè)只讀屬性可以幫助在可視化樹中導(dǎo)航。
用戶交互
圖形對(duì)象有幾個(gè)屬性,支持動(dòng)態(tài)自定義交互。有幾個(gè)可定義的函數(shù)可以對(duì)輸入事件執(zhí)行:mouseDragEnter, mouseDragLeave, mouseDrop, mouseEnter, mouseHold, mouseHover, mouseLeave和mouseOver。例如,你可以定義鼠標(biāo)進(jìn)入-離開事件處理程序來(lái)修改鼠標(biāo)經(jīng)過(guò)鏈接時(shí)的外觀:
myDiagram.linkTemplate = $(go.Link, $(go.Shape, { strokeWidth: 2, stroke: "gray" }, // default color is "gray" { // here E is the InputEvent and OBJ is this Shape mouseEnter: function(e, obj) { obj.strokeWidth = 4; obj.stroke = "dodgerblue"; }, mouseLeave: function(e, obj) { obj.strokeWidth = 2; obj.stroke = "gray"; } }));當(dāng)用戶適當(dāng)?shù)貑螕鬵raphhobject時(shí),會(huì)執(zhí)行click、doubleClick和contextClick函數(shù)。調(diào)用這些單擊函數(shù)時(shí),InputEvent作為第一個(gè)參數(shù),而這個(gè)GraphObject作為第二個(gè)參數(shù)。例如,您可以在跳轉(zhuǎn)到另一個(gè)頁(yè)面的節(jié)點(diǎn)上定義一個(gè)單擊事件處理程序:
myDiagram.nodeTemplate = $(go.Node, "Auto", $(go.Shape, "RoundedRectangle", new go.Binding("fill", "color")), $(go.TextBlock, { name: "TB", margin: 3 }, new go.Binding("text", "key")), { // second arg will be this GraphObject, which in this case is the Node itself: click: function(e, node) { window.open("http://en.wikipedia.org/Wiki/" + node.data.key); } });注意:您可能更喜歡在圖上定義DiagramEvent監(jiān)聽器,而不是在單獨(dú)的圖形對(duì)象上定義。DiagramEvents還包括更多的一般事件,這些事件不一定對(duì)應(yīng)于輸入事件。
屬性actionCancel, actionDown, actionMove和actionUp定義了當(dāng)GraphObject的isActionable屬性設(shè)置為true(默認(rèn)為false)時(shí)要執(zhí)行的函數(shù)。更多細(xì)節(jié)請(qǐng)參見ActionTool。
GraphObjects作為港口
在GoJS中,鏈接只能連接到指定為“端口”的節(jié)點(diǎn)內(nèi)的元素,默認(rèn)情況下,唯一的端口是節(jié)點(diǎn)本身。在節(jié)點(diǎn)中設(shè)置GraphObject的portId允許該對(duì)象充當(dāng)端口。注意:唯一一種可以保存鏈接所連接的端口的模型,即非空字符串的portIds,是GraphLinksModel的GraphLinksModel。linkFromPortIdProperty GraphLinksModel。linkToPortIdProperty被設(shè)置為鏈接數(shù)據(jù)對(duì)象的名稱屬性。
圖形對(duì)象有幾個(gè)屬性,僅當(dāng)它們作為端口時(shí)才相關(guān)。這些與港口相關(guān)的屬性是:
圖形對(duì)象還可以用作鏈接上的“標(biāo)簽”。除了alignmentFocus屬性之外,這些屬性還會(huì)在鏈接面板中以一種特定的方式將“標(biāo)簽”定位在鏈接路徑的特定點(diǎn)上:
有幾個(gè)屬性指定了相當(dāng)高級(jí)的交互行為:
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: