2013-04-29 24 views
6

Mam już obraz załadowany na dom i chcę być w stanie przeciągnąć ten obraz na płótno i upuścić go na płótno i stworzyć z niego obiekt kineticjs.kineticjs przeciągnij i upuść obraz z dom na płótno

Nie wiem, jak sprawić, aby obraz był przeciągalny i nie wiem, jak sprawić, by płótno reagowało na przeciąganie i upuszczanie zdarzeń, które już istnieją w domenie. Czy ktoś może mi pokazać, jak to zrobić?

Większość tutoriali pokazuje, jak przeciągać i upuszczać z płótna lub systemu plików, szukam sposobu przeciągania z DOM na płótno.

Informacje dodatkowe: Chcę mieć system menu lub kilka miniaturek, które użytkownik może przeciągnąć i upuścić na płótnie, aby rozwinąć zdjęcie.

Z góry dzięki!

+0

nie można przeciągnij i upuść element od DOM do Canvas, ponieważ przeciąganie i upuszczanie działa między DOM. Płótno nie pochodzi z DOM. Możesz użyć alternatywy, na przykład zdarzenia onload lub zdarzenia kliknięcia. –

+0

Cóż, możesz użyć jquery do odczytania obiektu dom, który chcesz utworzyć kinetyczny obiekt obrazu. Właśnie przeczytałeś atrybut obrazu, by pobrać źródło. następnie musisz utworzyć pseudo-logikę w jquery, która wykryje, kiedy masz obraz na płótnie. wtedy możesz stworzyć obiekt obrazu wewnątrz kinetyki. – SoluableNonagon

Odpowiedz

8

Nie ma problemu!

1 Musisz użyć "przeciągnij i upuść" z html5. Tutorial: http://www.html5rocks.com/en/tutorials/dnd/basics/

2 setup dom wydarzenie do obrazka:

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

3 imprezy dla obiektu kontenera:

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() 
    }; 
}); 

I oczywiście pełny przykład: http://jsfiddle.net/lavrton/n4w44/

+0

Cześć Lavrton, dzięki za odpowiedź! Jest to mniej więcej to, czego szukam, więc oznaczy to jako poprawne, ale zastanawiałem się, czy wiesz, jak to zrobić, jeśli dynamicznie ładuję obraz zamiast go wstępnie wczytać? – TriFu

+0

Czy możesz pokazać kod, w którym wstawiasz obraz do DOM. – lavrton

+0

@lavrton: Hi frnd. Ten link nie działa w Firefoksie. Pl, pomóż mi, jak to wykorzystałem w moim projekcie. –

Powiązane problemy