1

2つの入力ポートと2つの出力ポートを作成したいのですが、次のように菱形で試しました。

this.createPort("input");
this.createPort("input");
this.createPort("output");
this.createPort("output");

しかし、上記のコードは必要に応じて機能せず、ポートを作成しますが、ダイヤモンドの頂点ではなく、あちこちで作成されます。そのための方法を教えてください。

私もこの例を試しました:http ://draw2d.org/graphiti/jsdoc/#!/ example / galerie_shape_analog 、(菱形に似たブリッジの復元の例)が、この例にはハイブリッドポートが含まれています。必要なのは入力ポートと出力ポートです。 。

ですから、誰かアイデアがあれば教えてください。よろしくお願いします:)

4

2 に答える 2

0

解決策は、ロケーターを使用することです。ロケーターは、親の形状を基準にしてポートをレイアウトすることに応答します。

この例では、「createPort」メソッドでロケーターを使用していません。この場合、ポートはデフォルトの動作でレイアウトされます。

->左側のInputPorts

->右側の出力ポート

これは、ロケーターでいくつかのポートを追加するシェイプのinitメソッドの例です。

/**
 * @constructor
 * Create a new instance
 */
init:function(){
   this._super();

   this.inputLocator = new this.MyInputPortLocator();
   this.outputLocator = new this.MyOutputPortLocator();

   this.createPort("hybrid",this.inputLocator);
   this.createPort("hybrid",this.inputLocator);

   this.createPort("hybrid",this.outputLocator);
  this.createPort("hybrid",this.outputLocator);

}、

単純なロケーターのコード:

// custom locator for the special design of the ResistorBridge Input area
MyInputPortLocator : graphiti.layout.locator.Locator.extend({
    init:function( ){
      this._super();
    },    
    relocate:function(index, figure){
        var w = figure.getParent().getWidth();
        var h = figure.getParent().getHeight();

        figure.setPosition(w/2+1, h*index);
    }
}),
于 2012-07-05T21:42:22.007 に答える
0
MyInputPortLocator : graphiti.layout.locator.Locator.extend({
    init:function( ){
      this._super();
    },    
    relocate:function(index, figure){
        var w = figure.getParent().getWidth();
        var h = figure.getParent().getHeight();

        figure.setPosition(w/2+1, h*index);
    }
}),

MyOutputPortLocator : graphiti.layout.locator.Locator.extend({
    init:function( ){
      this._super();
    },    
    relocate:function(index, figure){
        var w = figure.getParent().getWidth();
        var h = figure.getParent().getHeight();

        figure.setPosition(w*(index-2), h/2);
    }
}),

init:function(){
    this._super();

    this.inputLocator = new this.MyInputPortLocator();
    this.outputLocator = new this.MyOutputPortLocator();

    this.createPort("input",this.inputLocator);
    this.createPort("input",this.inputLocator);

    this.createPort("output",this.outputLocator);
    this.createPort("output",this.outputLocator);
}

私はこのようなことを試しましたが、すべての場所で「ハイブリッド」ポートを使用すると上記のコードは正常に機能しますが、2つの入力ポートと2つの出力ポートを使用するとポートの配置が歪むため、すべてのポートがそれぞれにあるように上記のコードを修正してくださいダイヤモンドの頂点。

于 2012-07-09T08:32:41.330 に答える