轻量高效的拓扑图组件
zh

Qunee Developer Guide

Graph#addCustomInteraction(interaction)

Graph#addCustomInteraction(interaction)

实际应用中通常保留默认交互模式,在其基础上增加定制交互动作,如果只是处理单一事件,可以使用前面提到的Graph#on***方法,如果是复杂的动作,则可以添加定制交互,给组件设置一个定制好的交互器

示例

监听鼠标移动事件,实现图元高亮显示的效果

var graph = new Q.Graph(canvas);
var hello = graph.createNode("Hello", -100, -50);
hello.image = Q.Graphs.server;
var qunee = graph.createNode("Qunee", 100, 50);
var edge = graph.createEdge("Hello\nQunee", hello, qunee);
 
var currentElement;
var highlightColor = '#FFDB19';
function unhighlight(element){
    element.setStyle(Q.Styles.BACKGROUND_COLOR, null);
    currentElement.setStyle(Q.Styles.PADDING, null);
}
function highlight(element){
    if(currentElement == element){
        return;
    }
    if(currentElement){
        unhighlight(currentElement);
    }
    currentElement = element;
    if(!currentElement){
        return;
    }
    currentElement.setStyle(Q.Styles.BACKGROUND_COLOR, highlightColor);
    currentElement.setStyle(Q.Styles.PADDING, new Q.Insets(5));
}
 
graph.addCustomInteraction({
    onmousemove: function(evt, graph){
        var ui = graph.getUIByMouseEvent(evt);
        if(!ui){
            graph.cursor = null;
            highlight(null);
            return;
        }
        graph.cursor = "pointer";
        highlight(ui.data);
    }
});

运行效果

鼠标滑过节点时,显示黄色背景色: