RegularPolygon
、Star
、Sweep
Path.getPathSegment()
方法setTranslate()
、setRotate()
、setScale()
Shape.setTransform()
接口,改为 Shape.setMatrix()
接口Shape.getTransform()
添加参数 refer
kity.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 |