60 lines
1.5 KiB
JavaScript
60 lines
1.5 KiB
JavaScript
|
import Polygon from 'zrender/src/graphic/shape/Polygon';
|
||
|
import Group from 'zrender/src/container/Group';
|
||
|
import { arrows } from '../libs/ShapePoints';
|
||
|
|
||
|
class ESigAuto extends Group {
|
||
|
constructor(model) {
|
||
|
super();
|
||
|
this.model = model;
|
||
|
this._create();
|
||
|
}
|
||
|
|
||
|
_create() {
|
||
|
const model = this.model;
|
||
|
const style = this.model.style;
|
||
|
const rotation = model.drict != 1? 0 : Math.PI;
|
||
|
const x = model.x + model.drict * (model.count * style.Signal.signalR + style.Signal.signalLampStandardWidth) * 2;
|
||
|
const y = model.y - style.Signal.signalLampStandardWidth;
|
||
|
|
||
|
this.arrows = new Polygon({
|
||
|
zlevel: model.zlevel,
|
||
|
z: model.z,
|
||
|
rotation: rotation,
|
||
|
origin: [x, y],
|
||
|
shape: {
|
||
|
points: arrows(x, y, model.width, style.Signal.signalR * 0.8)
|
||
|
},
|
||
|
style: {
|
||
|
stroke: style.sidelineColor,
|
||
|
lineWidth: 0.6,
|
||
|
fill: style.Signal.signalLampGreenColor
|
||
|
}
|
||
|
});
|
||
|
this.add(this.arrows);
|
||
|
}
|
||
|
|
||
|
// 停止动画
|
||
|
animationRecover() {
|
||
|
this.arrows.stopAnimation(false);
|
||
|
}
|
||
|
|
||
|
// 箭头颜色
|
||
|
setColor(color) {
|
||
|
this.arrows.setStyle('fill', color);
|
||
|
}
|
||
|
|
||
|
// 箭头闪烁
|
||
|
arrowsAnimation() {
|
||
|
const style = this.model.style;
|
||
|
const fill = this.arrows.style.Signal.fill;
|
||
|
this.arrows.animate(true)
|
||
|
.when(1000, { fill: style.backgroundColor, stroke: style.style.backgroundColor })
|
||
|
.when(2000, { fill: fill, stroke: style.style.Signal.sidelineColor })
|
||
|
.when(3000, { fill: style.style.backgroundColor, stroke: style.style.backgroundColor })
|
||
|
.when(4000, { fill: fill, stroke: style.style.Signal.sidelineColor })
|
||
|
.start();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export default ESigAuto;
|