2

我对 Javascript 和 Arbor 很陌生,并且在绘制完整的节点图时遇到了一些困难。我想从显示我的代码开始我的问题:

 var handler = {
            clicked:function(e){
                var pos = $(canvas).offset();
                _mouseP = arbor.Point(e.pageX-pos.left, e.pageY-pos.top)
                selected = nearest = dragged = particleSystem.nearest(_mouseP);
                if (dragged.node !== null) dragged.node.fixed = true
                $(canvas).bind('mousemove', handler.dragged)
                $(window).bind('mouseup', handler.dropped)
                $(canvas).bind('mouseup', handler.newFunction)
            },
            newFunction:function(e){
                if (dragged===null || dragged.node===undefined) return
                if (dragged.node !== null){
                    dragged.node.fixed = false                  
                    var id=dragged.node.name;
                    //alert('Node selected: ' + id);
                }            
                return false
            },  
    }

我在画布上创建了一个节点。我的问题是:例如,当我将鼠标移到节点上时,如何以文本形式显示节点 ID 或任何信息?我只想在将鼠标移到该节点上时才显示文本。您的帮助将不胜感激。

4

1 回答 1

1

也许您可以添加一个 mousemove 侦听器,然后您可以在回调函数中测试鼠标是否在一个节点上。

    moved:function(e){
        var pos = $(canvas).offset();
        _mouseP = arbor.Point(e.pageX-pos.left, e.pageY-pos.top)
        nearestNode = particleSystem.nearest(_mouseP);

        if (!nearestNode.node) return false

        boxTuple = nodeBoxes[nearestNode.node.name];

        //judge whether mouse is on the node or not
        if(isInRectangle(boxTuple,_mouseP))
        {
                            var id = nearestNode.node.name;
            alert("Node selected:" + id);
        }
        return false
      },

     //add a mousemove listener 
    $(canvas).mousemove(handler.moved);

希望能帮助到你!

于 2013-11-11T12:04:28.287 回答