0

この例では:元に戻す/やり直し

  • 開始ノードをキャンバスにドロップします。
  • ポートをマウスダウンしてドラッグします。
  • ドラッグ中に右クリックを押します。

問題は、ポートが開始ノードから切り離されることです。それは起こらないはずです。

理解を深めるために、下の画像を参照してください。この問題を克服するために私を助けてください。前もって感謝します。

ここに画像の説明を入力

4

2 に答える 2

1

私はこの問題を綿密に分析し、次のような結論に達しました。

  • 問題は、マウス ダウンとマウス アップです。
  • マウスを押し下げてポートをドラッグし、マウスの右ボタンを押したときに見たように。次に、canvas.js で呼び出されたマウス ダウンが発生します。
  • 次に、マウスを右クリックしてから canvas.js をマウスアップすると、mouseDown = false が呼び出されます。

    this.html.bind("mouseup touchend", $.proxy(function(event)
        {
            if (this.mouseDown === false)
                return;
    
            event = this._getEvent(event);
    
            this.mouseDown = false;// it makes mouseDown false
            this.onMouseUp();
        }, this));
    
  • したがって、クイックフィックスを知るために、マウスを右クリックしてマウスを右クリックすると、次のように返されます。

マウスダウン:

    this.html.bind("mousedown touchstart", $.proxy(function(event)
        {                
           event.preventDefault();

           if(event.which == 3)//added this in the mouse down
              return;

           event = this._getEvent(event);

           this.mouseDownX = event.clientX;
           this.mouseDownY = event.clientY;
           var pos = this.fromDocumentToCanvasCoordinate(event.clientX, event.clientY);
           this.mouseDown = true;
           this.onMouseDown(pos.x, pos.y);
    }, this));

マウスアップ:

this.html.bind("mouseup touchend", $.proxy(function(event)
        {
            //added extra condition for right click
            if (this.mouseDown === false || event.which == 3)
                return;

            event = this._getEvent(event);

            this.mouseDown = false;// it makes mouseDown false
            this.onMouseUp();
        }, this));
  • 上記の変更後、問題は解決しましたが、間違っている可能性があります。私はそれを深くテストしていませんが、うまく機能しているので、私を修正してください。それについてあなたの指導が必要です。コードを変更して申し訳ありません。

本当にありがとうございます:)

于 2012-09-06T13:00:45.090 に答える
0

これはバグであり、次のリリースで修正される予定です。

于 2012-09-06T10:28:18.333 に答える