Draw2d js:如何将端口保持在图的顶部?

时间:2014-09-16 14:28:11

标签: draw2d-js

经过大量阅读以操纵端口位置后,我发现了另一个问题:当我选择一个位于图下方的端口时,如图所示。

enter image description here

enter image description here

我的问题是:如何将端口保持在图的顶部? 这是我的代码:

var leftLocator = new draw2d.layout.locator.InputPortLocator();
var rightLocator = new draw2d.layout.locator.OutputPortLocator();

leftLocator.relocate = function(index, figure) {
  var width = figure.getParent().getWidth();
  var height = figure.getParent().getHeight();

  var x = width / 4;
  var y = height / 2;

  figure.setPosition(x, y);
}

rightLocator.relocate = function(index, figure) {
  var width = figure.getParent().getWidth();
  var height = figure.getParent().getHeight();

  var x = width * 3 / 4;
  var y = height / 2;

  figure.setPosition(x, y);
}

elemento.createPort("input", leftLocator);
elemento.createPort("output", rightLocator);

2 个答案:

答案 0 :(得分:2)

我在onDragStart事件中使用“toFront”方法找到了一个解决方案:

OutputPortFigure = draw2d.OutputPort.extend({
  NAME: 'OutputPortFigure',
  init: function() { ... },
  onMouseEnter: function() { ... },
  onMouseLeave: function() { ... },
  onDragStart: function(x, y, shiftKey, ctrlKey) {
    this._super(x, y, shiftKey, ctrlKey);
    this.toFront(this.getParent());
  },
});

答案 1 :(得分:0)

我的一些数据遇到了同样的问题。

我找到了一个可以帮助的解决方案,但它并不是我认为最好的解决方案。

我创建了一个隐藏的图形,其中包含Ports(实现重绘方法,以便在父图像更改时重新调整子图形的大小)

var Hidden = draw2d.SetFigure.extend({
    NAME: "Hidden",
    init : function()
    {
        this._super();

        this.addPort(new draw2d.InputPort('port1'), new draw2d.layout.locator.InputPortLocator());
        this.addPort(new draw2d.OutputPort('port2'), new draw2d.layout.locator.OutputPortLocator());

        this.setDimension(300,150);
        this.setAlpha(0);
    },
    onDoubleClick: function(){
    }
});

var Test = draw2d.SetFigure.extend({
    NAME: "Test",
    init : function()
    {
        this._super();

        this.hidden = new Hidden();
        this.addFigure(this.hidden, new draw2d.layout.locator.CenterLocator(this));

        this.setAlpha(0.8);
        this.setDimension(300,150);
        this.setRadius(10);
        this.setStroke(3);
        this.label.setColor("#0d0d0d");
        this.label.setFontColor("#0d0d0d");
        this.addFigure(this.label, new draw2d.layout.locator.CenterLocator(this));

        this.tooltip = null;
    },
    repaint: function(attributes){
        this._super(attributes);
        if(this.hidden != undefined) this.hidden.setDimension(this.getWidth(), this.getHeight());
    },
    onDoubleClick: function(){
    }
});

如果您有更好的解决方案,我会很高兴看到它:)

当我实现一个可以有循环连接的数字时,我发现了这个