2013-04-29 2 views
6

dom에 이미 이미지가로드되어 있으며 해당 이미지를 캔버스로 드래그하여 캔버스에 놓고 그 안에 kineticjs 개체를 만들 수 있기를 원합니다.kineticjs 이미지를 dom에서 캔버스로 끌어 놓습니다.

이미지를 드래그 할 수있는 방법을 모르겠다. 이미 캔버스가 DOM에 이미있는 이벤트를 끌어서 놓는 방법에 대해 어떻게 반응하는지 알지 못한다. 누군가 이걸하는 방법을 보여줄 수 있습니까?

자습서의 대부분은 캔버스 또는 파일 시스템에서 끌어서 놓기 방법을 보여 주므로 DOM에서 캔버스로 끌는 방법을 찾고 있습니다.

배경 정보 : 사용자가 사진을 펼치기 위해 캔버스에 드래그 앤 드롭 할 수있는 메뉴 시스템 또는 미리보기 이미지 모음이 필요합니다.

미리 감사드립니다.

+0

놓기 드래그 앤 드롭이 DOM 사이에서 작동하기 때문에 DOM에서 Canvas 로의 요소. Canvas는 DOM에 포함되어 있지 않습니다. onload 이벤트 나 click 이벤트와 같은 대안을 사용할 수 있습니다. –

+0

자, jquery를 사용하여 동적 이미지 객체를 만들려는 dom 객체를 읽을 수 있습니다. 소스를 얻기 위해 이미지 속성을 읽었을뿐입니다. jquery에서 캔버스 위에 이미지가있을 때이를 감지 할 수있는 의사 논리를 만들어야합니다. kinetic 내부에 이미지 객체를 만들 수 있습니다. – SoluableNonagon

답변

8

문제가 없습니다.

1 html5에서 "끌어서 놓기"를 사용해야합니다. 자습서 : 컨테이너 개체에 대한

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://www.html5rocks.com/en/tutorials/dnd/basics/

이 설정 DOM 이벤트 http://jsfiddle.net/lavrton/n4w44/

드래그 할 수
+0

안녕 Lavrton, 답변 주셔서 감사합니다! 이것은 내가 뭘 찾고 있어요 그래서 나는 올바른 것으로 표시 할 것입니다,하지만 내가 동적으로 이미지를로드하는 대신 그것을 미리로드하는 경우 그것을 어떻게 할 수 있는지 궁금 해서요? – TriFu

+0

DOM에 이미지를 삽입하는 코드를 표시 할 수 있습니까? – lavrton

+0

@ lavrton : 안녕 frnd. 이 링크는 Firefox에서 작동하지 않습니다. 내 프로젝트에서 이것을 사용 했으므로 PI를 도와주세요. –

관련 문제