jmgraph 3.2.26 → 3.2.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +188 -0
- package/dist/jmgraph.core.min.js +1 -1
- package/dist/jmgraph.core.min.js.map +1 -1
- package/dist/jmgraph.js +2713 -425
- package/dist/jmgraph.min.js +1 -1
- package/index.d.ts +142 -1
- package/package.json +1 -1
- package/src/core/jmControl.js +827 -127
- package/src/core/jmEvents.js +154 -0
- package/src/core/jmFilter.js +38 -1
- package/src/core/jmGradient.js +59 -8
- package/src/core/jmGraph.js +51 -7
- package/src/core/jmLayer.js +34 -2
- package/src/core/jmList.js +167 -0
- package/src/core/jmObject.js +128 -8
- package/src/core/jmPath.js +43 -5
- package/src/core/jmProperty.js +181 -2
- package/src/core/jmShadow.js +36 -7
- package/src/core/jmUtils.js +187 -14
- package/src/lib/webgl/base.js +211 -83
- package/src/lib/webgl/core/buffer.js +43 -12
- package/src/lib/webgl/core/mapSize.js +16 -7
- package/src/lib/webgl/core/mapType.js +41 -22
- package/src/lib/webgl/core/program.js +94 -54
- package/src/lib/webgl/core/shader.js +20 -8
- package/src/lib/webgl/core/texture.js +55 -32
- package/src/lib/webgl/gradient.js +49 -17
- package/src/lib/webgl/index.js +173 -24
- package/src/lib/webgl/path.js +61 -12
- package/src/shapes/jmArc.js +48 -2
- package/src/shapes/jmArrow.js +35 -2
- package/src/shapes/jmArrowLine.js +33 -2
- package/src/shapes/jmBezier.js +50 -4
- package/src/shapes/jmCircle.js +35 -2
- package/src/shapes/jmEllipse.js +29 -3
- package/src/shapes/jmHArc.js +39 -2
- package/src/shapes/jmImage.js +49 -3
- package/src/shapes/jmLabel.js +41 -2
- package/src/shapes/jmLine.js +42 -2
- package/src/shapes/jmPolygon.js +42 -3
- package/src/shapes/jmPrismatic.js +34 -2
- package/src/shapes/jmRect.js +45 -3
- package/src/shapes/jmResize.js +42 -4
- package/src/shapes/jmStar.js +38 -4
package/src/core/jmList.js
CHANGED
|
@@ -1,4 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview jmList 列表类
|
|
3
|
+
*
|
|
4
|
+
* jmList 是 jmGraph 库的集合类,继承自原生 Array。
|
|
5
|
+
* 提供了增强的列表操作方法,包括去重添加、条件查找、遍历等。
|
|
6
|
+
*
|
|
7
|
+
* 主要功能:
|
|
8
|
+
* - 去重添加元素(add)
|
|
9
|
+
* - 条件查找(get)
|
|
10
|
+
* - 正向/反向遍历(each)
|
|
11
|
+
* - 元素计数(count)
|
|
12
|
+
* - 移除回调支持
|
|
13
|
+
*
|
|
14
|
+
* @module jmList
|
|
15
|
+
* @author jmGraph Team
|
|
16
|
+
* @license MIT
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* jmList 列表类
|
|
21
|
+
*
|
|
22
|
+
* 继承自 Array 的增强列表类,提供去重、遍历、查找等功能。
|
|
23
|
+
* 主要用于管理图形对象的子元素集合。
|
|
24
|
+
*
|
|
25
|
+
* @class jmList
|
|
26
|
+
* @extends Array
|
|
27
|
+
*
|
|
28
|
+
* @param {...*} arg 初始元素或数组
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* // 创建列表
|
|
32
|
+
* const list = new jmList([1, 2, 3]);
|
|
33
|
+
*
|
|
34
|
+
* // 添加元素(自动去重)
|
|
35
|
+
* list.add(4);
|
|
36
|
+
* list.add([5, 6]);
|
|
37
|
+
*
|
|
38
|
+
* // 遍历
|
|
39
|
+
* list.each((index, item) => {
|
|
40
|
+
* console.log(index, item);
|
|
41
|
+
* });
|
|
42
|
+
*
|
|
43
|
+
* // 条件查找
|
|
44
|
+
* const found = list.get(item => item > 3);
|
|
45
|
+
*/
|
|
1
46
|
export default class jmList extends Array {
|
|
47
|
+
/**
|
|
48
|
+
* 构造函数
|
|
49
|
+
*
|
|
50
|
+
* @param {...*} arg 初始元素或数组
|
|
51
|
+
*/
|
|
2
52
|
constructor(...arg) {
|
|
3
53
|
const ps = [];
|
|
4
54
|
if(arg && arg.length && Array.isArray(arg[0])) {
|
|
@@ -8,10 +58,33 @@ export default class jmList extends Array {
|
|
|
8
58
|
else {
|
|
9
59
|
super();
|
|
10
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* 配置选项
|
|
63
|
+
* @type {Object}
|
|
64
|
+
* @property {function} removeHandler 元素移除时的回调函数
|
|
65
|
+
*/
|
|
11
66
|
this.option = {};
|
|
67
|
+
/**
|
|
68
|
+
* 类型标识
|
|
69
|
+
* @type {string}
|
|
70
|
+
*/
|
|
12
71
|
this.type = 'jmList';
|
|
13
72
|
}
|
|
14
73
|
|
|
74
|
+
/**
|
|
75
|
+
* 添加元素到列表
|
|
76
|
+
*
|
|
77
|
+
* 自动去重,如果元素已存在则不会重复添加。
|
|
78
|
+
* 支持添加单个元素或数组。
|
|
79
|
+
*
|
|
80
|
+
* @method add
|
|
81
|
+
* @param {*} obj 要添加的元素或数组
|
|
82
|
+
* @returns {*} 添加的元素
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* list.add(1); // 添加单个元素
|
|
86
|
+
* list.add([2, 3, 4]); // 添加数组
|
|
87
|
+
*/
|
|
15
88
|
add(obj) {
|
|
16
89
|
if(obj && Array.isArray(obj)) {
|
|
17
90
|
for(let i=0; i < obj.length; i++) {
|
|
@@ -24,6 +97,17 @@ export default class jmList extends Array {
|
|
|
24
97
|
return obj;
|
|
25
98
|
}
|
|
26
99
|
|
|
100
|
+
/**
|
|
101
|
+
* 从列表中移除元素
|
|
102
|
+
*
|
|
103
|
+
* 移除所有匹配的元素,并触发移除回调。
|
|
104
|
+
*
|
|
105
|
+
* @method remove
|
|
106
|
+
* @param {*} obj 要移除的元素
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* list.remove(item);
|
|
110
|
+
*/
|
|
27
111
|
remove(obj) {
|
|
28
112
|
for(let i = this.length -1; i>=0; i--) {
|
|
29
113
|
if(this[i] == obj) {
|
|
@@ -32,6 +116,15 @@ export default class jmList extends Array {
|
|
|
32
116
|
}
|
|
33
117
|
}
|
|
34
118
|
|
|
119
|
+
/**
|
|
120
|
+
* 移除指定索引位置的元素
|
|
121
|
+
*
|
|
122
|
+
* @method removeAt
|
|
123
|
+
* @param {number} index 要移除的元素索引
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* list.removeAt(0); // 移除第一个元素
|
|
127
|
+
*/
|
|
35
128
|
removeAt(index) {
|
|
36
129
|
if(this.length > index) {
|
|
37
130
|
const obj = this[index];
|
|
@@ -40,10 +133,39 @@ export default class jmList extends Array {
|
|
|
40
133
|
}
|
|
41
134
|
}
|
|
42
135
|
|
|
136
|
+
/**
|
|
137
|
+
* 检查列表是否包含指定元素
|
|
138
|
+
*
|
|
139
|
+
* @method contain
|
|
140
|
+
* @param {*} obj 要检查的元素
|
|
141
|
+
* @returns {boolean} 如果包含返回 true,否则返回 false
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* if (list.contain(item)) {
|
|
145
|
+
* console.log('元素存在');
|
|
146
|
+
* }
|
|
147
|
+
*/
|
|
43
148
|
contain(obj) {
|
|
44
149
|
return this.includes(obj);
|
|
45
150
|
}
|
|
46
151
|
|
|
152
|
+
/**
|
|
153
|
+
* 获取元素
|
|
154
|
+
*
|
|
155
|
+
* 如果参数是函数,则返回第一个满足条件的元素;
|
|
156
|
+
* 如果参数是数字,则返回指定索引的元素。
|
|
157
|
+
*
|
|
158
|
+
* @method get
|
|
159
|
+
* @param {number|function} index 索引或条件函数
|
|
160
|
+
* @returns {*} 找到的元素,如果未找到返回 undefined
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* // 按索引获取
|
|
164
|
+
* const item = list.get(0);
|
|
165
|
+
*
|
|
166
|
+
* // 按条件查找
|
|
167
|
+
* const found = list.get(item => item.id === 5);
|
|
168
|
+
*/
|
|
47
169
|
get(index) {
|
|
48
170
|
if(typeof index == 'function') {
|
|
49
171
|
return this.find(index);
|
|
@@ -53,6 +175,27 @@ export default class jmList extends Array {
|
|
|
53
175
|
}
|
|
54
176
|
}
|
|
55
177
|
|
|
178
|
+
/**
|
|
179
|
+
* 遍历列表
|
|
180
|
+
*
|
|
181
|
+
* 支持正向和反向遍历。在回调中返回 false 可以中断遍历。
|
|
182
|
+
*
|
|
183
|
+
* @method each
|
|
184
|
+
* @param {function} cb 回调函数,参数为 (index, item)
|
|
185
|
+
* @param {boolean} [inverse=false] 是否反向遍历
|
|
186
|
+
*
|
|
187
|
+
* @example
|
|
188
|
+
* // 正向遍历
|
|
189
|
+
* list.each((index, item) => {
|
|
190
|
+
* console.log(index, item);
|
|
191
|
+
* if (item.id === 3) return false; // 中断遍历
|
|
192
|
+
* });
|
|
193
|
+
*
|
|
194
|
+
* // 反向遍历
|
|
195
|
+
* list.each((index, item) => {
|
|
196
|
+
* console.log(index, item);
|
|
197
|
+
* }, true);
|
|
198
|
+
*/
|
|
56
199
|
each(cb, inverse) {
|
|
57
200
|
if(cb && typeof cb == 'function') {
|
|
58
201
|
if(inverse) {
|
|
@@ -71,6 +214,20 @@ export default class jmList extends Array {
|
|
|
71
214
|
}
|
|
72
215
|
}
|
|
73
216
|
|
|
217
|
+
/**
|
|
218
|
+
* 统计元素数量
|
|
219
|
+
*
|
|
220
|
+
* 如果提供了条件函数,返回满足条件的元素数量;
|
|
221
|
+
* 否则返回列表总长度。
|
|
222
|
+
*
|
|
223
|
+
* @method count
|
|
224
|
+
* @param {function} [handler] 条件函数
|
|
225
|
+
* @returns {number} 元素数量
|
|
226
|
+
*
|
|
227
|
+
* @example
|
|
228
|
+
* const total = list.count(); // 总数量
|
|
229
|
+
* const matched = list.count(item => item.active); // 满足条件的数量
|
|
230
|
+
*/
|
|
74
231
|
count(handler) {
|
|
75
232
|
if(handler && typeof handler == 'function') {
|
|
76
233
|
let count = 0;
|
|
@@ -85,6 +242,16 @@ export default class jmList extends Array {
|
|
|
85
242
|
return this.length;
|
|
86
243
|
}
|
|
87
244
|
|
|
245
|
+
/**
|
|
246
|
+
* 清空列表
|
|
247
|
+
*
|
|
248
|
+
* 移除列表中的所有元素。
|
|
249
|
+
*
|
|
250
|
+
* @method clear
|
|
251
|
+
*
|
|
252
|
+
* @example
|
|
253
|
+
* list.clear();
|
|
254
|
+
*/
|
|
88
255
|
clear() {
|
|
89
256
|
this.splice(0, this.length);
|
|
90
257
|
}
|
package/src/core/jmObject.js
CHANGED
|
@@ -1,78 +1,198 @@
|
|
|
1
1
|
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview jmGraph 基础对象类
|
|
4
|
+
*
|
|
5
|
+
* jmObject 是 jmGraph 库中所有对象的基类,提供了:
|
|
6
|
+
* - 唯一ID生成机制
|
|
7
|
+
* - 类型检查方法
|
|
8
|
+
* - 动画帧调度系统
|
|
9
|
+
*
|
|
10
|
+
* @module jmObject
|
|
11
|
+
* @author jmGraph Team
|
|
12
|
+
* @license MIT
|
|
13
|
+
*/
|
|
14
|
+
|
|
2
15
|
import {jmList} from "./jmList.js";
|
|
3
16
|
|
|
17
|
+
/**
|
|
18
|
+
* 控件ID计数器
|
|
19
|
+
* 用于为每个新创建的对象生成唯一标识符
|
|
20
|
+
* @type {number}
|
|
21
|
+
* @private
|
|
22
|
+
*/
|
|
4
23
|
let control_id_counter = 0;
|
|
5
24
|
|
|
25
|
+
/**
|
|
26
|
+
* jmGraph 基础对象类
|
|
27
|
+
*
|
|
28
|
+
* 所有图形控件、属性对象、工具类的基类。
|
|
29
|
+
* 提供了对象标识、类型检查和动画调度等核心功能。
|
|
30
|
+
*
|
|
31
|
+
* @class jmObject
|
|
32
|
+
* @example
|
|
33
|
+
* // 创建一个基础对象
|
|
34
|
+
* const obj = new jmObject();
|
|
35
|
+
* console.log(obj.id); // 输出唯一ID
|
|
36
|
+
*
|
|
37
|
+
* // 类型检查
|
|
38
|
+
* obj.is('jmObject'); // true
|
|
39
|
+
* obj.is(jmObject); // true
|
|
40
|
+
*/
|
|
6
41
|
export default class jmObject {
|
|
42
|
+
/**
|
|
43
|
+
* 构造函数
|
|
44
|
+
*
|
|
45
|
+
* 创建一个新的基础对象实例,自动分配唯一ID。
|
|
46
|
+
* 如果传入的是 jmGraph 实例,则建立关联关系。
|
|
47
|
+
*
|
|
48
|
+
* @constructor
|
|
49
|
+
* @param {jmGraph} [g] - 可选的 jmGraph 实例,用于建立对象与画布的关联
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* // 创建独立对象
|
|
53
|
+
* const obj = new jmObject();
|
|
54
|
+
*
|
|
55
|
+
* // 创建关联画布的对象
|
|
56
|
+
* const graph = new jmGraph(canvas);
|
|
57
|
+
* const objWithGraph = new jmObject(graph);
|
|
58
|
+
*/
|
|
7
59
|
constructor(g) {
|
|
60
|
+
// 如果传入的是 jmGraph 实例,则建立引用关系
|
|
8
61
|
if(g && g.type == 'jmGraph') {
|
|
9
62
|
this.graph = g;
|
|
10
63
|
}
|
|
64
|
+
// 生成唯一ID
|
|
11
65
|
this.id = ++control_id_counter;
|
|
12
66
|
}
|
|
13
67
|
|
|
14
68
|
/**
|
|
15
|
-
*
|
|
69
|
+
* 检查对象是否为指定类型
|
|
70
|
+
*
|
|
71
|
+
* 支持两种类型检查方式:
|
|
72
|
+
* 1. 字符串方式:检查对象的 type 属性是否匹配
|
|
73
|
+
* 2. 类构造函数方式:使用 instanceof 检查原型链
|
|
16
74
|
*
|
|
17
75
|
* @method is
|
|
18
|
-
* @param {
|
|
19
|
-
* @
|
|
20
|
-
*
|
|
76
|
+
* @param {string|Function} type - 要检查的类型名称(字符串)或类构造函数
|
|
77
|
+
* @returns {boolean} 如果对象是指定类型则返回 true,否则返回 false
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* // 使用字符串检查
|
|
81
|
+
* control.is('jmRect'); // 检查是否为矩形
|
|
82
|
+
*
|
|
83
|
+
* // 使用类构造函数检查
|
|
84
|
+
* control.is(jmControl); // 检查是否为 jmControl 实例
|
|
85
|
+
* control.is(jmPath); // 检查是否继承自 jmPath
|
|
21
86
|
*/
|
|
22
87
|
is(type) {
|
|
88
|
+
// 字符串类型:检查 type 属性
|
|
23
89
|
if(typeof type == 'string') {
|
|
24
90
|
return this.type == type;
|
|
25
91
|
}
|
|
92
|
+
// 类构造函数:使用 instanceof 检查原型链
|
|
26
93
|
return this instanceof type;
|
|
27
94
|
}
|
|
28
95
|
|
|
96
|
+
/**
|
|
97
|
+
* 注册并执行动画帧回调
|
|
98
|
+
*
|
|
99
|
+
* 提供动画帧调度功能,支持:
|
|
100
|
+
* - 按指定时间间隔执行回调
|
|
101
|
+
* - 多个动画句柄并行执行
|
|
102
|
+
* - 自动清理返回 false 的动画
|
|
103
|
+
* - 错误自动移除异常动画
|
|
104
|
+
*
|
|
105
|
+
* 此方法通常由 jmGraph 实例调用,子控件会委托给所属的 graph 处理。
|
|
106
|
+
*
|
|
107
|
+
* @method animate
|
|
108
|
+
* @param {Function} handle - 动画回调函数,返回 false 时自动移除
|
|
109
|
+
* @param {number} [millisec=20] - 执行间隔(毫秒),默认 20ms
|
|
110
|
+
* @param {...*} [params] - 传递给回调函数的额外参数
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* // 创建一个简单的动画
|
|
114
|
+
* let x = 0;
|
|
115
|
+
* graph.animate(function() {
|
|
116
|
+
* x += 1;
|
|
117
|
+
* rect.position.x = x;
|
|
118
|
+
* graph.redraw();
|
|
119
|
+
*
|
|
120
|
+
* // 动画结束条件
|
|
121
|
+
* if(x > 100) return false;
|
|
122
|
+
* }, 16); // 约60fps
|
|
123
|
+
*
|
|
124
|
+
* // 带参数的动画
|
|
125
|
+
* graph.animate(function(speed) {
|
|
126
|
+
* x += speed;
|
|
127
|
+
* // ...
|
|
128
|
+
* }, 16, 5); // speed = 5
|
|
129
|
+
*/
|
|
29
130
|
animate(...args) {
|
|
131
|
+
// 只有 jmGraph 实例才真正处理动画调度
|
|
30
132
|
if(this.is('jmGraph')) {
|
|
133
|
+
// 注册新的动画句柄
|
|
31
134
|
if(args.length > 1) {
|
|
32
135
|
if(!this.animateHandles) this.animateHandles = new jmList();
|
|
33
136
|
|
|
137
|
+
// 收集额外参数
|
|
34
138
|
const params = [];
|
|
35
139
|
if(args.length > 2) {
|
|
36
140
|
for(let i=2;i<args.length;i++) {
|
|
37
141
|
params.push(args[i]);
|
|
38
142
|
}
|
|
39
143
|
}
|
|
144
|
+
// 添加动画句柄到列表
|
|
40
145
|
this.animateHandles.add({
|
|
41
|
-
millisec: args[1] || 20,
|
|
42
|
-
handle: args[0],
|
|
43
|
-
params: params
|
|
146
|
+
millisec: args[1] || 20, // 执行间隔
|
|
147
|
+
handle: args[0], // 回调函数
|
|
148
|
+
params: params // 额外参数
|
|
44
149
|
});
|
|
45
150
|
}
|
|
151
|
+
|
|
152
|
+
// 如果有动画句柄,启动调度循环
|
|
46
153
|
if(this.animateHandles) {
|
|
47
154
|
if(this.animateHandles.count() > 0) {
|
|
48
155
|
const self = this;
|
|
156
|
+
// 使用 setTimeout 进行调度(避免 requestAnimationFrame 的固定帧率限制)
|
|
49
157
|
this.dispatcher = setTimeout(function(_this) {
|
|
50
158
|
_this = _this || self;
|
|
51
|
-
const overduehandles = [];
|
|
159
|
+
const overduehandles = []; // 需要移除的句柄
|
|
52
160
|
const curTimes = Date.now();
|
|
161
|
+
|
|
162
|
+
// 遍历执行所有动画句柄
|
|
53
163
|
_this.animateHandles.each(function(i,ani) {
|
|
54
164
|
try {
|
|
165
|
+
// 检查是否到达执行时间
|
|
55
166
|
if(ani && ani.handle && (!ani.times || curTimes - ani.times >= ani.millisec)) {
|
|
167
|
+
// 执行回调
|
|
56
168
|
const r = ani.handle.apply(_this, ani.params);
|
|
169
|
+
// 返回 false 表示动画结束
|
|
57
170
|
if(r === false) {
|
|
58
171
|
overduehandles.push(ani);
|
|
59
172
|
}
|
|
173
|
+
// 更新最后执行时间
|
|
60
174
|
ani.times = curTimes;
|
|
61
175
|
}
|
|
62
176
|
}
|
|
63
177
|
catch(e) {
|
|
178
|
+
// 出错的句柄自动移除
|
|
64
179
|
if(ani) overduehandles.push(ani);
|
|
65
180
|
}
|
|
66
181
|
});
|
|
182
|
+
|
|
183
|
+
// 移除已完成的动画句柄
|
|
67
184
|
for(const i in overduehandles) {
|
|
68
185
|
_this.animateHandles.remove(overduehandles[i]);
|
|
69
186
|
}
|
|
187
|
+
|
|
188
|
+
// 继续下一轮调度
|
|
70
189
|
_this.animate();
|
|
71
190
|
},10,this);
|
|
72
191
|
}
|
|
73
192
|
}
|
|
74
193
|
}
|
|
75
194
|
else {
|
|
195
|
+
// 非 jmGraph 对象委托给所属的 graph 处理
|
|
76
196
|
const graph = this.graph;
|
|
77
197
|
if(graph) {
|
|
78
198
|
graph.animate(...args);
|
package/src/core/jmPath.js
CHANGED
|
@@ -1,13 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview jmPath 路径基类
|
|
3
|
+
*
|
|
4
|
+
* jmPath 是大部分图形的基类,提供了基于点序列的路径绘制能力。
|
|
5
|
+
* 所有需要通过点序列定义形状的图形(如多边形、线条、贝塞尔曲线等)
|
|
6
|
+
* 都可以继承此类。
|
|
7
|
+
*
|
|
8
|
+
* 主要功能:
|
|
9
|
+
* - 点序列管理(points 属性)
|
|
10
|
+
* - SVG 导出支持(toSVG 方法)
|
|
11
|
+
* - 路径闭合控制
|
|
12
|
+
*
|
|
13
|
+
* @module jmPath
|
|
14
|
+
* @author jmGraph Team
|
|
15
|
+
* @license MIT
|
|
16
|
+
*/
|
|
17
|
+
|
|
1
18
|
import {jmControl} from "./jmControl.js";
|
|
19
|
+
|
|
2
20
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
21
|
+
* 基础路径类
|
|
22
|
+
*
|
|
23
|
+
* 大部分图形的基类,通过指定一系列点来画出图形。
|
|
24
|
+
* 支持开放路径和闭合路径,支持 SVG 导出。
|
|
25
|
+
*
|
|
6
26
|
* @class jmPath
|
|
7
27
|
* @extends jmControl
|
|
8
|
-
*
|
|
28
|
+
*
|
|
29
|
+
* @param {Object} params 路径参数
|
|
30
|
+
* @param {Array<Object>} [params.points] 点序列,每个点格式:{x:0, y:0, m:false}
|
|
31
|
+
* @param {string} [t='jmPath'] 类型标识
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* // 创建自定义路径
|
|
35
|
+
* const path = new jmPath({
|
|
36
|
+
* points: [
|
|
37
|
+
* {x: 0, y: 0},
|
|
38
|
+
* {x: 100, y: 0},
|
|
39
|
+
* {x: 100, y: 100},
|
|
40
|
+
* {x: 0, y: 100}
|
|
41
|
+
* ],
|
|
42
|
+
* style: {
|
|
43
|
+
* fill: '#ff0000',
|
|
44
|
+
* stroke: '#000000',
|
|
45
|
+
* close: true // 闭合路径
|
|
46
|
+
* }
|
|
47
|
+
* });
|
|
9
48
|
*/
|
|
10
|
-
|
|
11
49
|
export default class jmPath extends jmControl {
|
|
12
50
|
|
|
13
51
|
constructor(params, t='jmPath') {
|