Gdy używam użyć następującego kodu JavaScriptmouseEvent.offsetX Dostaję jest znacznie większa niż rzeczywisty rozmiar płótna
function init() {
var gameCanvas = document.getElementById("gameCanvas");
document.getElementById("canvasWidth").innerHTML = gameCanvas.width;
gameCanvas.addEventListener("mousemove", handleMouseEvent);
}
function handleMouseEvent(mouseEvent) {
document.getElementById("mouseX").innerHTML = mouseEvent.offsetX;;
}
z tym html
<body>
<div id="mainScreen">
<div id="topScreen">
<h1 id="canvasWidth">Score:</h1>
<h1 id="mouseX">0</h1>
</div>
<div id="gameScreen">
<canvas id="gameCanvas" onclick="init()">
</canvas>
</div>
</div>
</body>
Szerokość płótno pokazuje się 300 póki mouseX, który pozostaje na płótnie, przekracza znacznie 300. Zrobiłem dla niego zrzut ekranu. Działa dobrze w Chrome, ale nie działa w aplikacjach Internet Explorer i Windows.
Zrzut ekranu: http://dc365.4shared.com/download/ajE0f2XQ?tsid=20130615-014658-676a63ae
Wskaźnik był gdzieś w pobliżu prawej krawędzi, ale nie przyszedł na zrzucie ekranu, dlatego zaznaczyłem go. Pierwsza liczba na górze to szerokość płótna, a druga na wskaźniku offsetX.
Dlaczego tak się dzieje, jak to poprawić?
Update (Dodano kod CSS)
kod CSS
#mainScreen {
display: -ms-grid;
-ms-grid-columns: 30px 1fr 30px;
-ms-grid-rows: 30px 100px 20px 1fr 30px;
height:inherit;
}
#topScreen {
display: -ms-grid;
-ms-grid-column: 2;
-ms-grid-row: 2;
-ms-grid-columns: 30px 150px 30px 60px 100px 1fr 30px;
-ms-grid-rows: 20px 1fr 20px;
}
#canvasWidth {
display: -ms-grid;
-ms-grid-row: 2;
-ms-grid-column: 2;
}
#mouseX {
display: -ms-grid;
-ms-grid-column: 4;
-ms-grid-row: 2;
}
#gameScreen {
display: -ms-grid;
-ms-grid-column: 2;
-ms-grid-row: 4;
-ms-grid-rows:1fr;
-ms-grid-columns: 1fr;
height:inherit;
width:inherit;
}
#gameCanvas {
height:inherit;
width:inherit;
background-color:white;
-ms-grid-column: 1;
-ms-grid-row: 1;
}
Wszystko o pomoc tutaj: http://stackoverflow.com/questions/55677/how-do-i-get-the-coordinates-of-a-mouse-click -on-a-canvas-element? rq = 1 –
Dzięki, ale to nie pomogło. –