gojs,是一款前端展示拓扑图的插件,它遵循自己的语法,因为他的功能丰富,官网上也可以看到许多例子,珊妹觉得不是一款很容易上手的前端插件,需要一点点挖掘它的功能,但每次发现它的新功能,对它的认可度都会+1.
今天我们来设置他的流动的连接线:(珊妹这里提供两个方法,因为学习过程中发现破解版的go.js里不支持Animation的方法)
方法一:
珊妹是拿官网里最简单的例子来学习的,因为多余的代码少,更能清楚的知道每段代码的意义;
1.首先在myDiagram.linkTemplate的设置里添加代码:
$(go.Shape,{isPanelMain:true,stroke:"lightgreen",strokeWidth:1}),
$(go.Shape,{isPanelMain:true,stroke:"lightblue",strokeWidth:5,name:"PIPE",strokeDashArray:[5,70]}),
如图:
我来给大家解释一下,流动的连接线需要设置两个颜色来看它流动的状态,如果普通的一根一个颜色的线是看不出来的,PIPE就是设置流动的管道,strokeDashArray的两个参数含义分别是:5像素长度,间距为70像素。效果如图:
2.在init方法的最后添加代码:
varanimation=newgo.Animation();
animation.easing=go.Animation.EaseLinear;
myDiagram.links.each(function(link){
animation.add(link.findObject("PIPE"),"strokeDashOffset",70,0)
});
animation.runCount=Infinity;
animation.start();
如图:
这里面strokeDashOffset的两个参数的含义分别是:偏移量,相对于绘制的起点偏移的量,偏移量是一个区间的值,无论参数值多大,偏移量不会大于线段总长度,
珊妹在测试期间发现,有时流动的不流畅,分析原因可能是偏移量设置的不合适,所以这里大家根据自身可以调节一下偏移量。
方法二:
myDiagram.linkTemplate里的设置不变,但是我们不用Animation类了,这里定义一个loop( )方法,代码如下:
varopacity=1;
vardown=true;
functionloop(){
vardiagram=myDiagram;
setTimeout(function(){
varoldskips=diagram.skipsUndoManager;
diagram.skipsUndoManager=true;
diagram.links.each(function(link){
varshape=link.findObject("PIPE");
varoff=shape.strokeDashOffset-3;
//设置(移动)笔划划动画
shape.strokeDashOffset=(off<=0)?60:off;
//动画(频闪)不透明度:
if(down)opacity=opacity-0.01;
elseopacity=opacity+0.003;
if(opacity<=0){down=!down;opacity=0;}
if(opacity>1){down=!down;opacity=1;}
shape.opacity=opacity;
});
diagram.skipsUndoManager=oldskips;
loop();
},60);
}
记住!!!,同样在init( )方法里调用loop( )方法,loop( )这个方法里对流动的透明度也有设置,如果大家用不到可以去掉。
好啦~~~今天的分享就到这里,关注博主不迷路,精彩内容下次继续。。。。