2014-10-06 2 views
1

Я хочу нарисовать копию этого изображения поверх него, но дальше вниз, но .onclick не работает для моего объекта изображения. Я тестировал его уже, и он отлично работает с canvas.onclick, но не с моим изображением «липким».не может добавить .onclick to image javascript

код ниже:

var canvas = document.getElementById('myCanvas'); 
var context = canvas.getContext("2d"); 

var sticky = new Image(); 
sticky.src = "sticky.png"; 
sticky.onload = function() { 

    context.drawImage(sticky, 0, 0); 
}; 

sticky.onclick = function() { 

    context.drawImage(sticky, 0, 100); 
}; 

</script> 
+0

После того, как вы рисуете изображение на холсте это уже не элемент, это пиксели. – elclanrs

+0

http://stackoverflow.com/questions/15331264/javascript-canvas-image-onclick-not-working – nisargjhaveri

+0

, что имеет смысл, но как должен выглядеть мой код, если бы я хотел, чтобы пользователь мог нажать «липкое» изображение и есть над ним другой? может ли кто-нибудь привести пример обходного пути для того, что я пытаюсь сделать? – user3150635

ответ

2

Ваше мероприятие должно быть на холсте, а не образ. Поскольку при создании объект изображения автоматически не добавляется в dom.

И когда изображение холста draw, оно дублирует его, оно копирует пиксели в себя.

Так что добавьте свое изображение в дом и слушайте клик на своем холсте. не

var canvas = document.getElementById('myCanvas'); 
 
var context = canvas.getContext("2d"); 
 
var sticky = new Image(); 
 
var sticky2 = new Image(); 
 

 
sticky.src = "http://lorempixel.com/250/60/"; 
 
sticky2.src = "http://lorempixel.com/150/60/"; 
 

 
sticky.onload = function() { 
 
    context.drawImage(sticky, 0, 0); 
 
}; 
 

 
canvas.onclick = function() { 
 
    context.drawImage(sticky2, 0, 100); 
 
};
<canvas id="myCanvas"></canvas>

+0

где бы я положил body.appendChild (липкий) ;? где бы я ни сказал, он все еще не работает ... – user3150635

+0

Спасибо! код работает сейчас, но есть две ошибки. во-первых, после моего холста появляется второе «липкое» изображение, которое появилось только тогда, когда я добавил «липкий» в дом, и я хочу, чтобы он исчез. во-вторых, когда я продолжаю нажимать на него, постоянно ли он рисует изображения (0,100)? если нет, то как я могу сделать это до бесконечности? – user3150635

+0

Определите 'ad infinitum', вы имеете в виду (0, 100n)? – YoannM