2016-10-21 7 views
0

私はSnap.svgが新しく、マウスを使って移動したりサイズを変更できる四角形を作っています。私はSnap.svg element.drag()を使用しました。このチュートリアルをスケーリングに使用しました。 http://svg.dabbles.info/snaptut-dragscaleスナップSVGのドラッグ&スケーリング:私の四角形はスケーリングを停止しませんか?

&をクリックすると、ドラッグすることができます。縮尺を変更するには、rectをダブルクリックしてからドラッグします。私の問題は、大きさを決めるまでは動きがうまくいくことです。私がすると、スケーリングモードから抜け出ることはありません。私はそれをもう一度動かすことはできません。私はコードを手抜きしようとしましたが、それは正しくできませんでした。別のダブルクリックの後でスケーリングを停止するにはどうすればよいですか?読んでくれてありがとう!

これは私のjavascriptのコードです:

     createRect(); 
         function createRect(){ 
         var r = Snap('#svg'); 
         var newRect = r.rect(100,100,80,60); 
         newRect.attr({        
          fill:'#afe5ff', 
          stroke:'#000', 
          strokeWidth: 2 
         }); 


         newRect.dblclick(addHandleFunc); 

         var dragging = 0; 
         var handleGroup; 

         function addHandleFunc() { 
          if(dragging === 0) { 
           dragging = 1; 
           var bb = this.getBBox();          
           this.drag(move,start,stop); 


          } else { 

           dragging = 0;          
           r.append(this);  

           }    


         } 

         function start() { 
         this.data('origTransform', this.transform().local); 
         } 

         function move(dx,dy) { 
          var scale = 1 + dx/50; 
          this.attr({ 
          transform: this.data('origTransform') + (this.data('origTransform') ? "S" : "s") + scale         
          }); 

         } 

         function stop() {} 

         newRect.drag(); 

         } 

そしてexample

答えて

0

あなたは第二のダブルクリックを行うと、あなたがドラッグ機能をリセットすることにより、スケーリングモードを「オフ」する必要がありますデフォルトのもの。これを行うには、パラメータなしでdrag()に再度電話するだけです。

+0

こんにちは、ありがとうございました!私はこれを試して、それは動作しますが、私はそれをただ一度サイズ変更することができます、そして、それは再び動作しません。いくつかの印刷を使用した後、私はドラッグ()を呼び出した後でもそれを参照してください。デフォルトの引数では、引き続きstart、move、stopという関数を使います。なぜこうなった? https://jsbin.com/qipejuduko/edit?html,js,console,output –

+0

申し訳ありませんが、正しくテストしませんでした。最初に 'undrag()'を呼び出すことによって、ドラッグハンドラのスケーリングバージョンを登録解除します。 –

+0

それは働いた!本当にありがとう。 –

関連する問題