2013-04-29 4 views
6

私は既にdomに画像をロードしています。その画像をキャンバスにドラッグしてキャンバスにドロップし、そこからkineticjsオブジェクトを作成したいと考えています。kineticjs domからキャンバスに画像をドラッグアンドドロップする

イメージをドラッグ可能にする方法がわかりません。また、DOM上に既に存在するイベントをドラッグアンドドロップする方法をキャンバスに反映させる方法がわかりません。誰かが私にこれを行う方法を教えてもらえますか?

チュートリアルのほとんどは、キャンバスやファイルシステムからドラッグアンドドロップする方法を示していますが、私はDOMからキャンバスにドラッグする方法を探しています。

背景情報: 写真を拡大するために、キャンバスにドラッグアンドドロップできるメニューシステムやサムネイルがたくさんあります。

ありがとうございます!

+0

ドラッグアンドドロップすることができませんドラッグアンドドロップはDOM間で機能するため、DOMからCanvasへの要素です。 CanvasはDOMの下にはありません。 onloadイベントやclickイベントなどの代替イベントを使用できます。 –

+0

jqueryを使用して、動的イメージオブジェクトを作成するDOMオブジェクトを読み取ることができます。ソースを取得するには、image属性を読み取ってください。キャンバス上にイメージを置いたときに検出するjqueryで疑似ロジックを作成する必要があります。キネティックス内でイメージオブジェクトを作成することができます。 – SoluableNonagon

答えて

8

問題ありません!

1 html5から「ドラッグアンドドロップ」を使用する必要があります。チュートリアル:http://www.html5rocks.com/en/tutorials/dnd/basics/

2画像に設定DOMイベント:コンテナオブジェクトのための

var dragSrcEl = null; 
//image 
document.getElementById("yoda").addEventListener('dragstart',function(e){ 
     dragSrcEl = this; 
}); 

3イベント:

var con = stage.getContainer();   
con.addEventListener('dragover',function(e){ 
    e.preventDefault(); // !!important 
}); 
//insert image to stage 
con.addEventListener('drop',function(e){ 
    var image = new Kinetic.Image({ 
     draggable : true 
    }); 
    layer.add(image); 
    imageObj = new Image(); 
    imageObj.src = dragSrcEl.src; 
    imageObj.onload = function(){ 
     image.setImage(imageObj) 
     layer.draw() 
    }; 
}); 

そしてもちろん、完全な例を:http://jsfiddle.net/lavrton/n4w44/

+0

こんにちはLavrton、答えをありがとう!これは多かれ少なかれ私が探しているものなので正しいとマークしますが、イメージをプリロードする代わりに動的にロードする方法を知っていますか? – TriFu

+0

イメージをDOMに挿入するコードを表示できますか? – lavrton

+0

@ lavrton:こんにちは。このリンクはFirefoxでは機能しません。私のプロジェクトでこれを使ったので、私を助けてください。 –

関連する問題