RegularPolygon、Star、SweepPath.getPathSegment() 方法setTranslate()、setRotate()、setScale()Shape.setTransform() 接口,改为 Shape.setMatrix() 接口Shape.getTransform() 添加参数 referkity.Timeline.requestFrame(frame)Marker 类支持箭头定义。Path 上添加方法 `setMarker(start所有点参数都用 Point 类表示。其中为了数据交换方便,规定:
Point 实例具有 x 和 y 属性,表示其直角坐标Point 类具有构造函数 Point(x, y)Point 类具有 offset(dx, dy) 方法可以返回偏移后的点Point 重载 toString() 方法,返回字符串 "{x} {y}"Point 重载 valueOf() 方法,返回数组 [x, y]Point.fromPolar(r, a [, aUnit]) 静态方法可以使用极坐标系参数创建点,其中 a 表示角度,r 表示距离。aType 表示角度单位,可取 "deg"(默认)、"rad"Point 继承Vector.fromPoints(p1, p2).square().length().add(Vector q).minus(Vector q).dot(Vector q).project(Vector q).normalize(Number length).multipy(Number scale).rotate(Number a [, String aUnit]).vertical().reverse()RegularPolygon、Star、Sweep类设计:待定
Path.getPathSegment() 方法setTranslate()、setRotate()、setScale()Shape.setTransform() 接口,改为 Shape.setMatrix() 接口Shape.getTransform() 添加参数 refer> 说明:
> `getTransform()` 的结果是所有变换的总和(matrix + scale + rotate + translate)
> `refer` 可取值为 `"paper"` 或 `"top"`,获得图形相对于所在的 paper 的变换
> `refer` 可取值为 `"screen"`,获得图形相对于 `window` 的变换(私有用法,不公开)
> `ShapeEvent.getPosition()`、`Shape.getRenderBox()` 同步支持 `refer` 参数,不过 `getPosition()` 默认参照 `"paper"`
// 升级前:
// 不支持
//
// 升级后:
text.setTextAnchor('center', 'middle');
// text-anchor-x: 支持 'left'(默认)、'center'、'right'
// text-anchor-y: 支持 'top'、'baseline(默认)'、'middle'、'bottom'
// 升级前:不支持
// 升级后:
var link = new kity.HyperLink('http://www.baidu.com');
var rect = new kity.Path().rect(50, 50, 50, 200);
var text = new kity.Text('百度一下');
link.addShapes([rect, text]);
paper.addShape(link);
appendLine()setContent("this is line 1\nthis is line 2") 自动转为两行// 升级前:
var text1 = new kity.Text('this is line1').setY(0);
var text2 = new kity.Text('this is line2').setY(20);
paper.addShapes([text1, text2]);
// 升级后:
var text = new kity.Text('this is line1\nthis is line2').setLineHeight(20);
paper.addShape(text);
var text = new kity.Text('this is a path text').setPath(path);
// 升级后:
text.setTextAnchor('12%', 'middle'); // 设置了 path 后 text-anchor-x 支持百分数
垂直定位方案需要调研。
kity.Timeline.requestFrame(frame)回调会针对 fn 函数提供回调参数:
frame.time - 当前帧触发时的事件戳,精确到 msframe.elapsed - 从首帧开始到当前帧经过的时间,单位为 ms。param.dur - 从上一帧到当前帧经过的时间,单位为 ms。param.rate - 当前帧率,单位为 hz(帧/秒)param.next()Marker 类支持箭头定义。Path 上添加方法 setMarker(start [,end [, mid]]) 来使用箭头。Marker 类的方法:
setSize(width, height) - 设置箭头的尺寸setRef(x, y) - 设置箭头的参照点setRotate() - 设置箭头的角度,默认为 'auto',跟随 Path 的切线方向。// 升级前
// 不支持
// 升级后
var marker1 = new kity.Marker().addShape( circle );
var marker2 = new kity.Marker().addShape( square );
var marker3 = new kity.Marker().addShape( triangle );
line.setMarker(marker1, marker2, marker3);
kity.gc.distance(p1, p2)
计算两点距离
kity.gc.getBox(p1, p2)
返回 p1 和 p2 两点所表示的矩形区域
kity.gc.mergeBox(b1, b2)
返回包围 b1 和 b2 的最小矩形区域
kity.gc.getBoxIntersect()
返回矩形区域 b1 和 b2 的重合矩形区域,如果区域不存在返回 null
*kity.gc.getClosurePoly(points)
返回包围指定点集的最小多边形
*kity.gc.getClosureBox()
返回包围指定点集的最小矩形
kity.gc.parsePathString( pathString )
解析 path 字符串为 pathSegment
kity.gc.getPathLength( path )
返回一个 path 的长度
kity.gc.getPointOfPath( path, offset )
返回一个 path 在 offset 长度处的位置。
Point 对象具有额外的 tan 属性,tan 是一个矢量对象 Vector,其方向为返回的点在 Path 上的切线方向,长度为该点的曲率半径。*: 暂时无使用需求,但是直觉觉得比较需要
8.1. 当前问题
当前对于 Kity 的性能没有度量,无法比较。
8.2. 建议
设计具有代表性的 benchmark,并且和竞品进行性能对比。竞品包括:
目前可以想到的 benchmark 包括:
8.3. 阻力
benchmark 的设计有一定难度。需要设计出能度量性能的方案之后才能制定性能优化方案。
| Project / API | setTransform() |
|---|---|
| Kity (Demo & Example) | 2 |
| Kity Formula | 3 |
| Kity Formula Editor | 5 |
| Kity Charts | 7 |
| Kity Minder | 12 |
| Total | 29 |