[英]Return coordinates of mouse click on HTML5 canvas using Javascript mouse events?
請參閱本網站上的代碼
我想返回鼠標單擊/移動相對於html5畫布的相對坐標。 下面的代碼是什么意思?
if ( event.layerX || event.layerX == 0) { // Firefox
mouseX = event.layerX ;
mouseY = event.layerY;
} else if (event.offsetX || event.offsetX == 0) { // Opera
mouseX = event.offsetX;
mouseY = event.offsetY;
}
layerX適用於除Opera之外的所有瀏覽器。 offsetX適用於除Firefox以外的所有瀏覽器
那么我們的意思是,如果event.layerX或event.layerY為0 ...我的意思是event.layerX返回鼠標點擊wrt畫布的相對坐標。 那么這有什么意義呢?
更好的方法是這樣的代碼:
if ( event.offsetX == null ) { // Firefox
mouseX = event.originalEvent.layerX;
mouseY = event.originalEvent.layerY;
} else { // Other browsers
mouseX = event.offsetX;
mouseY = event.offsetY;
}
它很快,正確,而且
event.layerX和event.layerY在WebKit中被破壞和棄用。 它們將在不久的將來從發動機中移除。
對於鼠標坐標(123,12) event.layerX || event.layerX == 0
event.layerX || event.layerX == 0
將在語句的第一部分( event.layerX
)中為TRUE,而不會檢查第二部分( event.layerX == 0
)。
如果event.layerX undefined
(因為即我們正在使用Opera) event.layerX || event.layerX == 0
第一部分 event.layerX || event.layerX == 0
將給我們FALSE,第二個將不會被檢查。
但還有一種可能性。 鼠標坐標可以是( event.layerX || event.layerX == 0
)和event.layerX || event.layerX == 0
的第一部分 當這些坐標完全有效時, event.layerX || event.layerX == 0
會給我們FALSE。 這就是為什么有一個第二部分event.layerX == 0
將返回TRUE所以if語句將被評估。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.