2012-01-24 15 views
3

html5 canvas要素のイベントを登録する特別な方法があるかどうか知りたいですか?html5 canvasでマウスイベントが発生していない

次のコードは、私のcanvas要素上の任意のマウスイベントは発生しません:私は、キャンバス上でクリックしたときに

function MyObject() { 
    this.init(); 
}; 

MyObject.prototype.init = function() { 
    var canvas = document.getElementById('myCanvas'); 
    var ctx = canvas.getContext('2d'); 
    var anImage = new Image('image1.png'); 

    ctx.drawImage(anImage, 0, 0, 100, 100, 0, 0, 100, 100); 

    canvas.onmousedown = createDelegate(this, this.mouseDownEvent); 
} 

MyObject.prototype.mouseDownEvent = function(e) { 
    //Not even reaching this point. 
} 

var obj = new MyObject(); 

mouseDownEvent関数が呼び出されさえなっていません。誰も私にコードで何が間違っているか教えてもらえますか?

N.B.イメージタグのキャンバスをスワップアウトすると問題が解決します。 [OK]を

+1

文書のhtml構造はわかりませんが、最も可能性の高い理由は、キャンバスがより高いzインデックスを持つ他の要素によってオーバーラップされているためです。 canvas.onmousedownは間違いなく動作し、私はそれを使用しました。 – kirilloid

+1

あなたのコードに間違いはありませんが、あなたの問題の原因はどこかにあるはずです。参照してください:http://jsfiddle.net/9FPAB/ –

+0

私はこれが奇妙なことを知っているが、キャンバス要素へのスタイリングを-webkit-transform:translate3d(0、0、0)を追加することで問題を修正したようだ。 。 – Draco

答えて

1

は、私が...これは奇妙ですが、canvas要素に

-webkit-transform: translate3d(0, 0, 0) 

スタイリングを追加することによって、問題を修正しているようだ奇妙な知っています。

1

これは少し遅れていますが、私はまったく同じような経験をしています。私はここにそれを詳述した:Putting HTML5 <canvas> inside <table> nullifies mouse events。マウスイベントがまだトリガされていたことが判明しましたが、私の計算された座標はすべて間違ったオフセットを基準にして計算されていました。

これはおそらくあなたを助けるには遅すぎるかもしれませんが、あなたの知的好奇心を満足させるでしょうか?

関連する問題