2012-02-11 2 views
0

私は<canvas>要素の中に2つの画像を持っています。キャンバス要素内のどのオブジェクト名/ IDをクリックするか?

var ctx = document.getElementById('canvas').getContext('2d'); 

var img1 = new Image(); 
img1.src = 'cloud.jpg'; 
img1.name = "Image 1"; 
img1.onload = function() { 
    ctx.drawImage(img1, 0, 0); 
}; 

var img2 = new Image(); 
img2.src = 'eleph.png'; 
img2.name = "Image 2"; 
img2.onload = function() { 
    ctx.drawImage(img2, 250, 250); 
}; 

ここで、ユーザーが内部のキャンバスをクリックすると、クリックされたオブジェクトを見つけたいと思います。 たとえば、ユーザーがキャンバス内の対応するイメージをクリックすると、警告img1.nameまたはimg2.nameが表示されます。

これを行う方法はいくつか教えてください。ありがとう!

+0

あなたはこれまでに何を試しましたか? 'alert()'または 'console.log()'?クリックイベントをキャプチャするには? – Jakub

+0

通常、[シャドウキャンバス](http://stackoverflow.com/a/6604825/707111)を使用する必要があります。 – Ryan

+0

私はalert(e.target.name)を試して、Canvasオブジェクトを返すようにしました。 –

答えて

0

まず、各画像の位置とサイズを変数に格納しておく必要があります。その後、clickイベントでマウスの下にあるものをチェックするイメージ位置のコレクションを反復するonclickハンドラをcanvas要素に追加します。

+0

ありがとうミハス!私が使用している画像は透明なPNGです。あなたの返信からわかるように、私はonclickが非透明部分ではなく、イメージ全体で機能すると思います。私が間違っているなら、私を訂正してください。 –

+0

実際には、透明な領域を含む画像全体で動作します – Mikhas

+0

こんにちは@Mikhas、あなたの問題を解決しましたか?私も同様の問題に直面しているので、私に教えてください。 –

関連する問題