У меня есть элемент <canvas>
, который охватывает ширину и высоту моей веб-страницы, как фон. Он имеет интерактивные элементы, которые полагаются на координаты мыши. Когда холст находился в собственном блоке (т. Е. Ничего более), интерактивные элементы работали нормально. Но теперь, когда у него есть divs, он не захватывает никаких взаимодействий с мышью.создание холста регистр мыши двигаться с div над ним
Ниже представлен код javascript для mousemove. Почему элементы на вершине влияют на то, что они собирают координаты xy мыши и как их исправить?
var mouse = {x:-100,y:-100};
var mouseOnScreen = false;
canvas.addEventListener('mousemove', MouseMove, false);
canvas.addEventListener('mouseout', MouseOut, false);
var MouseMove = function(e) {
if (e.layerX || e.layerX == 0) {
//Reset particle positions
mouseOnScreen = true;
mouse.x = e.layerX - canvas.offsetLeft;
mouse.y = e.layerY - canvas.offsetTop;
}
}
var MouseOut = function(e) {
mouseOnScreen = false;
mouse.x = -100;
mouse.y = -100;
}
var update = function(){
var i, dx, dy, sqrDist, scale;
//...... this chunk is the only part of the function that references the mouse
dx = parts[i].x - mouse.x;
dy = parts[i].y - mouse.y;
sqrDist = Math.sqrt(dx*dx + dy*dy);
if (sqrDist < 20){
parts[i].r = true;
}
.....
}
да, мне нужно нажать на кнопку или два в верхних div, чтобы это не сработало. Полезно знать, хотя! Любой шанс, что вы знаете, как сделать координаты координат событий-to-canvas? – Acoustic77
Возможно, нарисуйте свои кнопки на холсте с помощью 'fillRect' и' fillText', а затем ответьте, когда пользователь нажимает на холст в прямоугольнике кнопок? – markE
Поскольку холст не нужно взаимодействовать с другим, кроме положения мыши, я предпочел бы, чтобы он просто отслеживал положение мыши, чем перепроектировать divs, которые у меня есть над ним. Дивы намного сложнее – Acoustic77