HT 流动线手册

索引


概述

流动线插件可以在ht.Shapeht.Edge上增加流动效果,支持内部流动元素或用户自定义的流动元素沿着路径步进,而且没有引入新的类, 只是在ht.Shapeht.Edgeht.graph.GraphView上扩展了一些方法或样式,因此非常易于使用。要使用此插件,只需要引入ht-flow.js文件:

<script src="ht.js"></script> <!--先引入ht.js-->
<script src="ht-flow.js"></script>

此插件在ht.Shapeht.Edge类上扩展了一些样式控制流动效果,用户可以通过ht.Shape#setStyleht.Edge#setStyle操作这些样式, 说明如下:

ht.graph.GraphView上扩展的API如下:

从上面的说明中可以看出,拓扑上的所有Data的流动的时间间隔是一样的,如果需要营造不同的Data流动速度不同的效果,可以修改相关Dataflow.step样式。

示例一:综合示例

您可以操作下面的例子验证此插件:

上面的例子展示了如何使用流动样式,您可以通过源代码查看实现原理。

示例二:公交线路图

您可以拖拽公交站调整线路。公交站用ht.Node实现,公交车用流动的图片来展示,因为公交站和线路是不同的节点,为了避免线路上的公交车被公交站遮挡, 使用了两个Shape来模拟线路和公交车:

公交站节点通过setHost(busLane)固定在busLane的上面,然后通过setLayer(1)固定到busLanePath下面,就可以实现公交车在线路和公交站之上流动的效果。

另外,拖拽公交站时会调整busLanePathbusLane,所以需要监听公交站的位置信息变化,然后修改线路的points,由于站点是吸附到线路上的 ,修改线路的points需要调用ht.Default.getInternal().setIsolating(true);,避免公交站和线路互相影响。

示例三:与其它插件集成

无需做额外的处理,按照原来的方式使用插件各自的API即可,下面的例子里用到了EdgeType插件、自动布局插件及Painter机制:

这个例子里使用了全局的默认样式配置:

<script type="text/javascript">
    htconfig = {
         Style: {
             'edge.color': "black",
             'flow': true,
             'edge.offset': 0,
             'flow.element.background': "rgb(41, 249, 47)",
             'flow.element.count': 1,
             'flow.count': 2,
             'flow.element.max': 10,
             'flow.element.shadow.visible': false
         }
     };
 </script>

这种语法结构的详细信息可以参考Theme文档


欢迎交流 service@hightopo.com