版本记录
v2.5.0
1. ADD: 相机功能
js
// 相机 ‘看向’ 100,100
stage.camera.lookAt(100, 100);
2. ADD: PathLink(带路径的Link)
js
import {
PathLink
} from '@jtopo/core';
const link = new PathLink();
link.setPath(
[
{ x: -100, y: -100 },
{ x: -100, y: 0 },
{ x: 200, y: 200 },
{ x: 300, y: 200 },
]
);
3. FIX: 样式和序列化的一些bug修复
v2.4.0
- CHG: 性能提升
- FIX: 移动设备触摸屏基本支持
- FIX: 样式系统完善
- 主题可以正常动态切换了
- 不能直接修改style对象的属性,必须通过css()方法设置
js
// 不再支持直接修改style对象
node.style.lineWidth = 3;
node.style.fillStyle = 'red';
// 统一通过css()方法设置
node.css({
lineWidth: 3,
fillStyle: 'red'
});
- ADD: 径向渐变(RadialGradient)、图案(StylePattern)、线性渐变(LinearGradient)
示例代码
js
import {
RadialGradient,
StylePattern,
LinearGradient
} from '@jtopo/core';
// 径向渐变
let rg = new RadialGradient(-5, -5, 4, -8, -8, 32);
rg.setColors([[0, 'white'], [0.5, 'pink'], [1, 'red']]);
node.css({
fillStyle: rg
});
// 图案
stage.styleSystem.defClass('.group', {
fillStyle: new StylePattern('./assets/img/pattern.jpg', 'repeat')
});
- CHG: 编辑模式操作体验提升
- 调整节点尺寸时,按住shift可以等比缩放了
- ADD:可以对所有资源加载后做回调处理
- ADD: Node对象可以接收drop事件了
示例代码
js
// 接收drop
node.dropAllowed = true;
node.on('drop', () => {
let target = inputSystem.target;
if(target != null){
target.changeParent(node);
}
});
- ADD: 脚本功能(序列化的json中可以嵌入js代码了)
示例代码
js
import {Runtime} from '@jtopo/core';
function myScript(stage, layer) {
let fromNode = layer.querySelector('[name="fromNode"]')
//....
}
// 序列化时把脚本代码嵌入json, 增加了info字段,可以增加画面的额外信息
const withScriptJson = layer.toFileJson({
script: myScript.toString(),
info: {
author: 'Jack',
date: '2020-01-01',
description: 'XXX车间控制图-A'
//...
}
});
// 加载数据
layer.openJson(withScriptJson).then((jsonObj)=>{
// 执行脚本
Runtime.execute(jsonObj.script, layer);
});
- ADD: 增加一个简单‘液体效果’
示例代码
js
// ‘液体简单模拟’
let waterEffect = effectSystem.waterLike(['#efefef', 'green', 'rgb(0,87,55)'], 80, 80);
let waterNode = waterEffect.objects[0];
waterNode.setXY(200, -200);
layer.addChild(waterNode);
waterEffect.play();
v2.2.2
- FIX: 修复折线的lineJoin不生效的问题
- FIX: 若干小问题修复
v2.2.1
- ADD: 字体工具类-FontUtil, 提供了对指定字体的文本尺寸计算的功能
- DEL: 移除对HtmlImage的支持
v2.2.0
1. ADD: 序列化时图片可以内联进json了
2. ADD: 增加一个连线标记效果
3. CHG: 线条流动效果默认循环次数为无限次
4. CHG: 移除加载json的版本对比警告
5. CHG: 支持emoji符号,如:🚫 ❓ ✅ 💤🖥❌ 输入或复制粘贴
6. CHG: 提供了API,可以对自带的快捷键禁用/启用
7. FIX: 对象拖拽事件(mousedrag/mousedragend)触发不正常的问题
示例代码
js
// 序列化时图片内联
let imageToBase64 = true;
let json = layer.toFileJson(imageToBase64);
// 禁用
stage.keyboard.disable();
// 启用
stage.keyboard.enable();
v2.1.0
1. ADD: 可以将指定Node、Link对象转成图片、图片文件可下载到本地
2. ADD: ImageUtil工具类,可以生成带滤镜的图片对象
3. ADD: style增加了常用滤镜效果(高斯模糊、反色、灰度、锐化等9种)
4. CHG: 序列化功能完善
5. FIX: Node背景图片repeat可能出错的问题
示例代码
js
```js
// 示例
let node = new Node();
// Base64编码
let imgData = stage.exportSystem.toDataURL(node);
console.log(imgData); //data:image/png;base64,iVBORw0KG...
// Image 对象
let imgObj = stage.exportSystem.toImage(node);
imgObj.onload = ()=> console.log('完成');
// 根据图片生成一个新的Image对象(带 绿色 滤镜)
const greenImg = ImageUtil.colorFilter(imgObj, [0, 255, 0]);
// 直接下载对象为图片到本地
stage.exportSystem.saveAsLocalImage(node);
// 滤镜
layer.css({
// 反色 + 高斯模糊
filter: 'invert(80%) blur(1px)'
});
node.css({
// 灰度
filter: 'grayscale(100%)'
});
v2.0.1
1. FIX: 编辑模式优化:鼠标画线时不舒服,可能连不上的问题。
2. FIX: 加载json后背景网格不自动对齐的问题
3. CHG: 编辑模式:鼠标画出来的线可以自定义了
4. CHG: Shape的静态属性和方法调整
1. Shape.outerGrid() 的返回值从坐标数组改为Shape对象
2. Shape.innerGrid() 的返回值从坐标数组改为Shape对象
示例代码
js
// 当鼠标画出每一条线时,可以对该线条做一些操作
// 下面演示:给鼠标画出的每条线增加一个菱形箭头
editor.onLinkCreate = function (link) {
let endArrow = new Node();
endArrow.resizeTo(12, 12);
endArrow.setShape(Shape.Damond); // 菱形
endArrow.css({ fillStyle: 'gray' });
// 不可被连线
endArrow.connectable = false;
link.setEndArrow(endArrow);
}
// 原来
let points = Shape.innerGrid(rows, cols);
// 调整后:
let shape = Shape.innerGrid(rows, cols);
let points = shape.points;
v2.0.0
v2.0.0的底层架构相对于v1.x.x版本有了非常大的变化,新项目没问题。
如果是v1.x.x的重度使用的老项目需谨慎做评估,建议保持现状。