2017-11-23 17 views
2

ファブリックJSの最新バージョンでは、イメージドロップ機能が期待通りに機能しません。新しいファブリックJSのドラッグアンドドロップイメージの問題

function handleDrop(e) { 
     e.preventDefault(); 
     // this/e.target is current target element. 

     if (e.stopPropagation) { 
      e.stopPropagation(); // stops the browser from redirecting. 
     } 

     var obj = document.querySelector('#draggable_items_container .drag_item.draggable_items'); 

     if($(obj).attr('data-type')=='image') 
     { 
      var image_url = $(obj).attr('data-value'); 
      var new_image = new fabric.Image(obj, { 
       width: obj.width, 
       height: obj.height, 
       left: e.layerX, 
       top: e.layerY, 
      }); 
      canvas.add(new_image); 
     } 
     else 
     { 
      var text_value = $(obj).attr('data-value'); 
      if(text_value=='') 
      { 
       alert('You cant drag blank text'); 
       return false; 
      } 

      var params = { 
       canvas_obj : canvas, 
       text: text_value, 
       left : e.layerX, 
       top : e.layerY, 
       font_size : 22, 
       editable: false, 
      }; 
      add_text_canvas(params); 
     } 
     return false; 
    } 

ワーキングフィドル:

http://jsfiddle.net/dhavalsisodiya/w8kkc/412/

2.0.0-beta.7に働いていない
http://jsfiddle.net/Ahammadalipk/w8kkc/185/

は、どのようにこの問題を解決するには?あなたは、実際の画像の幅と高さを設定する必要が

enter image description here

+0

正確には機能しないのは何ですか? Chrome v62でリンクした両方の操作で、画像を下のボックスにドラッグできます。 – David

+0

申し訳ありませんが、jsファイルがフィドルで更新されませんでした。ただそれを更新しました。画像が縮小していません。 – DS9

+0

もう一度、まだどちらもうまくいくようですが、何が壊れているのか説明していません。何が起こっているべきか説明できますか? – David

答えて

2
var newImage = new fabric.Image(img, { 
    width: img.naturalWidth, 
    height: img.naturalHeight, 
    scaleX: setImageWidth/img.naturalWidth,   
    scaleY: setImageHeight/img.naturalHeight, 
    // Set the center of the new object based on the event coordinates relative 
    // to the canvas container. 
    left: e.layerX, 
    top: e.layerY 
}); 

、その後、あなたの条件に応じて、XとYをスケーリング。ここが更新されましたfiddle

+1

ありがとう、もう一度。 – DS9

関連する問題