Как я получаю координаты щелчка мышью по элементу холста?

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

263
задан Tom 27 March 2011 в 21:49
поделиться

2 ответа

Эй, это находится в додзе, правое дело, это - то, в чем у меня уже был код для проекта.

должно быть довольно Очевидно, как преобразовать его назад в не ваниль додзе JavaScript.

  function onMouseClick(e) {
      var x = e.clientX;
      var y = e.clientY;
  }
  var canvas = dojo.byId(canvasId);
  dojo.connect(canvas,"click",onMouseClick);

Hope, которая помогает.

-1
ответ дан Brian Gianforcaro 23 November 2019 в 02:33
поделиться

Будьте осторожны при выполнении преобразования координат; в событии клика возвращается несколько значений, не относящихся к кросс-браузеру. Использование только clientX и clientY недостаточно, если окно браузера прокручивается (проверено в Firefox 3.5 и Chrome 3.0).

Эта статья о режиме совместимости предоставляет более правильную функцию, которая может использовать либо pageX, либо pageY, либо комбинацию clientX с document.body.scrollLeft и clientY с document.body.scrollTop для вычисления координаты щелчка относительно документа. происхождение.

ОБНОВЛЕНИЕ: Кроме того, offsetLeft и offsetTop относятся к размеру дополненного элемента, а не к внутреннему размеру. Холст с примененным стилем padding: не будет отображать левый верхний угол его области содержимого как offsetLeft. Есть разные решения этой проблемы; Самым простым может быть удаление всех стилей границ, отступов и т. д. на самом холсте и их применение к блоку, содержащему холст.

5 и Chrome 3.0).

Эта статья о режиме совместимости предоставляет более правильную функцию, которая может использовать либо pageX, либо pageY, либо комбинацию clientX с document.body.scrollLeft и clientY с document.body.scrollTop для вычисления координаты щелчка относительно документа. происхождение.

ОБНОВЛЕНИЕ: Кроме того, offsetLeft и offsetTop относятся к размеру дополненного элемента, а не к внутреннему размеру. Холст с примененным стилем padding: не будет отображать левый верхний угол его области содержимого как offsetLeft. Есть разные решения этой проблемы; Самым простым может быть удаление всех стилей границ, отступов и т. д. на самом холсте и их применение к блоку, содержащему холст.

5 и Chrome 3.0).

Эта статья о режиме совместимости предоставляет более правильную функцию, которая может использовать либо pageX, либо pageY, либо комбинацию clientX с document.body.scrollLeft и clientY с document.body.scrollTop для вычисления координаты щелчка относительно документа. происхождение.

ОБНОВЛЕНИЕ: Кроме того, offsetLeft и offsetTop относятся к размеру дополненного элемента, а не к внутреннему размеру. Холст с примененным стилем padding: не будет отображать левый верхний угол его области содержимого как offsetLeft. Есть разные решения этой проблемы; Самым простым может быть удаление всех стилей границ, отступов и т. д. на самом холсте и их применение к блоку, содержащему холст.

Эта статья о режиме совместимости предоставляет более правильную функцию, которая может использовать либо pageX, либо pageY, либо комбинацию clientX с document.body.scrollLeft и clientY с document.body.scrollTop для вычисления координаты щелчка относительно документа. происхождение.

ОБНОВЛЕНИЕ: Кроме того, offsetLeft и offsetTop относятся к размеру дополненного элемента, а не к внутреннему размеру. Холст с примененным стилем padding: не будет отображать левый верхний угол его области содержимого как offsetLeft. Есть разные решения этой проблемы; Самым простым может быть удаление всех стилей границ, отступов и т. д. на самом холсте и их применение к блоку, содержащему холст.

Эта статья о режиме совместимости предоставляет более правильную функцию, которая может использовать либо pageX, либо pageY, либо комбинацию clientX с document.body.scrollLeft и clientY с document.body.scrollTop для вычисления координаты щелчка относительно документа. происхождение.

ОБНОВЛЕНИЕ: Дополнительно, offsetLeft и offsetTop относятся к размеру дополненного элемента, а не к внутреннему размеру. Холст с примененным стилем padding: не будет отображать левый верхний угол его области содержимого как offsetLeft. Есть разные решения этой проблемы; Самым простым может быть удаление всех стилей границ, отступов и т. д. на самом холсте и их применение к блоку, содержащему холст.

Кроме того, offsetLeft и offsetTop относятся к размеру дополненного элемента, а не к внутреннему размеру. Холст с примененным стилем padding: не будет отображать левый верхний угол его области содержимого как offsetLeft. Есть разные решения этой проблемы; Самым простым может быть удаление всех стилей границ, отступов и т. д. на самом холсте и их применение к блоку, содержащему холст.

Кроме того, offsetLeft и offsetTop относятся к размеру дополненного элемента, а не к внутреннему размеру. Холст с примененным стилем padding: не будет отображать левый верхний угол его области содержимого как offsetLeft. Есть разные решения этой проблемы; Самым простым может быть удаление всех стилей границ, отступов и т. д. на самом холсте и их применение к блоку, содержащему холст.

7
ответ дан 23 November 2019 в 02:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: