cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
81 lines (80 loc) • 2.58 kB
JavaScript
import { __extends } from "../../../../tslib/tslib.es6.mjs";
import Polyline from "./Polyline.mjs";
import EffectLine from "./EffectLine.mjs";
import { dist } from "../../../../zrender/lib/core/vector.mjs";
var EffectPolyline = function(_super) {
__extends(EffectPolyline2, _super);
function EffectPolyline2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this._lastFrame = 0;
_this._lastFramePercent = 0;
return _this;
}
EffectPolyline2.prototype.createLine = function(lineData, idx, seriesScope) {
return new Polyline(lineData, idx, seriesScope);
};
EffectPolyline2.prototype._updateAnimationPoints = function(symbol, points) {
this._points = points;
var accLenArr = [0];
var len = 0;
for (var i = 1; i < points.length; i++) {
var p1 = points[i - 1];
var p2 = points[i];
len += dist(p1, p2);
accLenArr.push(len);
}
if (len === 0) {
this._length = 0;
return;
}
for (var i = 0; i < accLenArr.length; i++) {
accLenArr[i] /= len;
}
this._offsets = accLenArr;
this._length = len;
};
EffectPolyline2.prototype._getLineLength = function() {
return this._length;
};
EffectPolyline2.prototype._updateSymbolPosition = function(symbol) {
var t = symbol.__t < 1 ? symbol.__t : 2 - symbol.__t;
var points = this._points;
var offsets = this._offsets;
var len = points.length;
if (!offsets) {
return;
}
var lastFrame = this._lastFrame;
var frame;
if (t < this._lastFramePercent) {
var start = Math.min(lastFrame + 1, len - 1);
for (frame = start; frame >= 0; frame--) {
if (offsets[frame] <= t) {
break;
}
}
frame = Math.min(frame, len - 2);
} else {
for (frame = lastFrame; frame < len; frame++) {
if (offsets[frame] > t) {
break;
}
}
frame = Math.min(frame - 1, len - 2);
}
var p = (t - offsets[frame]) / (offsets[frame + 1] - offsets[frame]);
var p0 = points[frame];
var p1 = points[frame + 1];
symbol.x = p0[0] * (1 - p) + p * p1[0];
symbol.y = p0[1] * (1 - p) + p * p1[1];
var tx = symbol.__t < 1 ? p1[0] - p0[0] : p0[0] - p1[0];
var ty = symbol.__t < 1 ? p1[1] - p0[1] : p0[1] - p1[1];
symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2;
this._lastFrame = frame;
this._lastFramePercent = t;
symbol.ignore = false;
};
return EffectPolyline2;
}(EffectLine);
var EffectPolyline$1 = EffectPolyline;
export { EffectPolyline$1 as default };