- 成员变量列表
- 成员函数列表
- constructor构造函数
- init初始化函数
- getIconRect计算图标区域函数
- getTextRect计算文字区域函数
- calcAnchors计算锚点函数
- calcRotateAnchors计算旋转后的锚点函数
- getDockWatchers计算移动节点时,停靠点的参考位置函数
- emitRender通知画布刷新绘画函数
- drawImg绘画图片函数
- draw绘画函数
- animate显示动画
- initAnimate 动画状态初始化
- restore 恢复到某个状态
- scale缩放
- setChild设置子节点
- calcChildrenRect 作为父节点,计算子节点计算位置
- calcRectByParent 作为子节点,计算在父节点计算位置
- calcRectInParent 根据子节点当前画布位置,计算在父节点的位置
- setChild 设置子节点
画布基本元素之一,继承于画笔
// es6, npm lib
import { Node } from 'topology-core/models/node';
// es5, bundle.js
Le5leTopology.Node
成员变量列表
继承于画笔的成员变量这里省略,请参考画笔
仅仅标*字段和rect里面的width、height为必须,其他字段可按需选择
所有整数类型,需要用户确保是数字类型,否则可能出错。
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
name* | string | 节点名称,指用什么节点图形绘画节点形状。 例如: rectangle 指矩形,circle为圆形等 必须是有效的内置节点名,或有效的自定义(注册)节点名称。否则无法识别 |
|
is3D | boolean | false | 是否是3D模型 |
z | number | z坐标 | |
zRotate | number | z轴旋转角度° | |
borderRadius | number | 0 | 圆角。宽/高的百分比小数形式 <1,百分比小数形式 >1,像素 |
bkType | number | 0 | 背景色类型 0 - 纯色背景,配合fillStyle属性生效。 1 - 线性渐变,配合设置下面属性: gradientFromColor gradientToColor gradientAngle 2 - 径向渐变,配合设置下面属性 gradientFromColor gradientToColor gradientRadius |
gradientFromColor | string | 渐变起始颜色 | |
gradientToColor | string |
渐变终点颜色 | |
gradientAngle | number |
线性渐变角度方向 | |
gradientRadius | number |
径向渐变半径 | |
iconFamily | string | 字体图标字体名称 (字体文件css或字体项目设置中找,不知道的,请自行教程字体图标的使用) |
|
icon | string | [前提]: 1. 加载字体文件 1. 正确设置上面的iconFamily icon的值为:字体图标Unicode编码字符串 格式:’\ue64d’ icon是一个长度为1的特殊字符,’\ue64d’是编码表示法。如果不确定字符内容是否写法正确,用icon.length大小判断;或用下面的String相关函数转换。 iconfont上显示的是“”,需要把前面的“&#x”替换成“\u” 如果是十进制的unicode编码58953,需要使用JS编码函数转换:String.fromCharCode(58953) 如果从后端拿到的是纯编码字符串,非长度为1的Unicode字符(画布上无法显示),需要先转码: String.fromCharCode(+’0xe64d’) 注意,这个不再是\u,而是十六进制字符串 如果想要查看当前 icon 对应的十六进制字符串,icon.charCodeAt().toString(16) 。 |
|
iconSize | number | 字体图标大小 | |
iconColor | string | 字体图标颜色 | |
image | string | 图片图标url,优先于字体图标显示。 | |
imgNaturalWidth | number | 图片图标原始宽,自动计算 | |
imgNaturalHeight | number | 图片图标原始高,自动计算 | |
imageWidth | number | 图片图标显示宽 | |
imageHeight | number | 图片图标显示高 | |
imageRatio | boolean | true | 是否保存图片长宽比 |
imageAlign | string | center | 图片位置 center top bottom left right left-top right-top left-bottom right-bottom |
iconRotate | number | 图标/图片旋转角度(°) | |
iconRect | 自定义Rect | 图标占据空间 | |
fullIconRect | 自定义Rect | 没有文字,仅存在图标时占据的空间 | |
text | string | 文字内容 | |
textMaxLine | number | 文本最大显示行数 | |
textRect | 自定义Rect | 文本占据空间 | |
fullTextRect | 自定义Rect | 没有图标,仅存在文字时占据的空间 | |
paddingTop | number | string | 节点内边距。如果是数字,表示像素;如果带百分号%,表示比例计算。 用于用户输入。 |
|
paddingBottom | number | string | ||
paddingLeft | number | string | ||
paddingRight | number | string | ||
paddingTopNum | number | 自动计算的padding数字。 用于计算图标、文字等区域,直接使用。 |
|
paddingBottomNum | number | ||
paddingLeftNum | number | ||
paddingRightNum | number | ||
anchors | Point[] | 锚点。用于线的连接点 | |
manualAnchors | Point[] | 自定义锚点 | |
rotatedAnchors | Point[] | 旋转后的锚点 | |
dockWatchers | Point[] | 移动节点时,停靠点的参考位置 | |
children | Node[] | 子节点 | |
stand | boolean | 作为子节点是否能被独立选中 | |
hideInput | boolean | 双击不显示输入框 | |
hideRotateCP |
boolean | 不显示旋转 | |
hideSizeCP | boolean | 不显示缩放控制点 | |
hideAnchor |
boolean | 不显示锚点 | |
disableSizeX | boolean | 否 | 控制点只能改变节点width |
disableSizeY | boolean | 否 | 控制点只能改变节点height |
rectInParent | { x: number | string; y: number | string; width: number | string; height: number | string; marginTop?: number | string; marginRight?: number | string; marginBottom?: number | string; marginLeft?: number | string; rotate: number; } |
如果作为子节点,必须包含 x、y - 相对于父节点的坐标 widht、height - 宽高 margin - 间隔 rotate - 旋转 其中x、y、widht、height数字表示像素;%表示父节点的百分比。 具体计算方法,见下图2: |
|
animateType | string | 0 | 动画辅助数据,给业务层用。比如,业务层默认设置了10种动画效果,可以用此数据表示用户选择了第几个动画。 |
animateDuration | number | 0 | 动画总时长 |
animateFrames | { duration: number; start?: number; end?: number; initState?: Node; linear: boolean; state: Node; }[] |
动画帧。详情见 动画 | |
animate* | 其他画笔通用动画属性设置 | 详情见:画笔 | |
playType | number | 0 - 人工播放;1 - auto自动播放;2 - animate play | |
playLoop | boolean | 循环播放 | |
nextPlay | string | 下一个播放的 id or tag | |
iframe | string | 显示外部网页,类似iframe | |
elementId | string | 和节点绑定的dom元素。 一般用于临时生成,显示一段自己的dom元素。比如画布里使用echart用到的 |
|
elementRendered |
boolean | 外部dom是否已经渲染。当需要重绘时,设置为false(用于第三方库辅助变量) 比如修改echarts数据后 |
图1
图2,子节点区域计算方式
成员函数列表
constructor构造函数
constructor(json?: any)
参数
名称 | 类型 | 是否必选 | 描述 |
---|---|---|---|
json | object | 是。属性数据为上面的成员列表 | 通过一个节点或保存的json对象,创建一个新节点 |
init初始化函数
init()
通过节点属性,动态计算节点图标区域、文字区域、锚点等。
getIconRect计算图标区域函数
getIconRect()
getTextRect计算文字区域函数
getTextRect()
calcAnchors计算锚点函数
calcAnchors()
calcRotateAnchors计算旋转后的锚点函数
calcRotateAnchors()
getDockWatchers计算移动节点时,停靠点的参考位置函数
getDockWatchers()
emitRender通知画布刷新绘画函数
emitRender()
drawImg绘画图片函数
drawImg(ctx: CanvasRenderingContext2D)
draw绘画函数
draw(ctx: CanvasRenderingContext2D)
animate显示动画
animate(ctx: CanvasRenderingContext2D, now: number)
渲染节点动画。其中,now - 当前时间Date.now
initAnimate 动画状态初始化
initAnimate()
restore 恢复到某个状态
restore(state?: Node)
参数可选 state:动画帧的state或节点。默认为播放动画前自身状态。
主要用于动画播放过程中,停止动画后,恢复到最初状态。
// 恢复到动画前
node.restore()
// 动画状态清0
node.initAnimate()
topology.render()
scale缩放
scale(scale: number, center?: Point)
根据中心点(默认为节点中心)缩放节点。
setChild设置子节点
setChild(children: any[])
传入json数组,自动new Node并push到节点children里面。
【注意】所有子节点必须包含rectInParent
手工临时给节点添加子节点:
// 伪代码,下面代码默认包含递归添加
const parent = new Node(...);
parent.setChild([{...}]);
canvas.render();
calcChildrenRect 作为父节点,计算子节点计算位置
calcChildrenRect()
calcRectByParent 作为子节点,计算在父节点计算位置
calcRectByParent(parent: Pen)
根据子节点rectInParent属性,计算实际在画布中位置
calcRectInParent 根据子节点当前画布位置,计算在父节点的位置
calcRectInParent(parent: Pen)
计算子节点的rectInParent属性
setChild 设置子节点
setChild(children: any[])
子节点json对象数组或Node数组
手工临时给节点添加子节点:
// 伪代码,下面代码默认不含递归添加
const parent = new Node(...);
const child = new Node(...);
parent.setChild([child]);
canvas.render();