Skip to content

1. 基础对象讲解

jtopo的核心对象有:

TIP

Stage、Layer、Canvas、Node、Link, 关系如下图:

Stage、Layer和Node关系

1.1. 顶层对象(Stage)

核心对象之间存在层级结构,最顶层的为Stage,管理一个或者多个Layer(目前支持一个Layer),可以对Layer进行管理:添加、移除。

提供一些常规性的交互功能,比如:鼠标缩放、视图模式变换(普通、框选、拖拽、编辑、锁定);

代码示例:

js
const stage = new Stage(“divOrId”);
stage.show(); // 显示出来

1.2. 层对象(Layer)

Layer 是一个抽象对象,默认是完全透明的,上层对象为Stage。

一个Layer下面可以有多个Node、Link对象, 放入Layer后才可能显示出来。

Layer 可以被平移、缩放,用户通过鼠标在画布上的拖拽 和 鼠标滚轮完成,也可以通过API来修改Layer的x、y坐标和缩放系数scaleX和scaleY实现同等效果。

一个Layer对象对应一个Canvas。

代码示例:

js
const stage = new Stage();
const layer = new Layer(“layer-1”);
stage.addChild(layer); // 放入Stage
//…
stage.show(); // 显示出来

1.3. 节点对象(Node)

用户操作的核心两个对象Node 、Link之一,后面简称为:图元

Node给人的形象是一个矩形,有坐标(x,y) 和 宽高尺寸(width、heigh)。

可以指定一个文本字符串,默认显示在矩形的下方中间位置。

Node对象的外观可以通过css方法设置,核心的外观属性有:边框颜色、填充颜色、字体颜色、字体(大小、加粗等CSS Font支持的都可以)、圆角。

代码示例:

js
const stage = new Stage();
const layer = new Layer(“layer-1”);
stage.addChild(layer); // 放入Stage

const node = new Node(“Node-1”);
layer.addChild(node); // 放入Layer

stage.show(); // 显示出来

各种Node效果如下:

用户操作的核心两个对象之一。

Link给人的形象是连线,有起始点和结束点,一般用来表示关系、流向等。

可以指定一个文本字符串,默认显示在连线的中间。

Link对象的外观可以通过css方法设置,核心的外观属性有:颜色、线条粗细、字体颜色、字体(大小、加粗等CSS Font支持的都可以)。

代码示例:

js
const link = new Link('Link',fromNode,toNode);
layer.addChild(link);

各种Link效果如下:

2. 系统介绍

根据功能分类,从概念上细分出了不同的子系统来处理不同的功能需求:

1. 样式系统 (StyleSystem)
2. 输入系统(InputSystem)
3. 动画系统 (AnimationSystem)
4. 序列化系统 (SerializerSystem)
5. 特效系统 (EffectSystem)
6. 布局系统 (LayoutSystem)
7. 图系统 (GraphSystem)

请参考左侧对应的目录和章节