У меня есть следующая функция JavaScript mousedown
, которую я использую, чтобы определить, когда на одном из изображений, которые я отображал на холсте HTML5, было выполнено "mousedown":
_mousedown: function(evt) {
this._setUserPosition(evt);
var obj = this.getIntersection(this.getUserPosition());
if(obj && obj.shape) {
var shape = obj.shape;
this.clickStart = true;
shape._handleEvent('mousedown', evt);
displayTip(obj.shape.index);
console.log(obj);
}
Как вы можете видеть, всякий раз, когда выполняется 'наведение мыши' на часть холста, на которой есть нарисованный объект, эта функция вызывает функцию displayTip
.
В настоящее время функция displayTip
выглядит так:
function displayTip(index){
document.getElementById('tipsParagraph').innerHTML = tips[index];
console.log("displayTip being called");
console.log("canvasImage id = " + canvasImage.id);
}
Теперь функция mousedown
работает частично правильно, поскольку при вызове displayTip
эта функция затем обновляет содержимое абзаца tipsParagraph
до того, что хранится в массиве tips
в позиции index
. Однако, как видите, в конце функции displayTip
у меня есть строка
`console.log("canvasImage id = " + canvasImage.id);
и в конце функции mousedown
у меня есть строка
console.log(obj);
Насколько я понимаю, любой объект, обнаруженный в момент щелчка на холсте, будет сохранен в переменной obj
, как определено строкой
var obj = this.getIntersection(this.getUserPosition());
Но в консоли журнал в конце моей функции displayTip()
сообщает, что canvasImage.id
не определено, а журнал в конце моей функции mousedown
сообщает, что значение переменной obj
равно [object Object]
Я не уверен, почему мой canvasImage.id
не определен... он должен отображать атрибут ID изображения, на котором был обнаружен mousedown
... есть идеи, почему этого не происходит?
Предположительно, журнал консоли value of variable obj:[object Object]
означает, что mousedown «захватил» изображение в позиции mousedown, поэтому он должен отображать идентификатор этого объекта, не так ли?
Редактировать 03.01.2013 в 14:35
Код для изображения холста выглядит следующим образом:
Сначала он определяется как глобальная переменная в начале файла вместе со всеми другими моими глобальными переменными с помощью строки:
var canvasImage;
Следующее использование происходит в моей функции 'drawImage()', где я использовал ее следующим образом:
var canvasImage = new Kinetic.Image({
image: imageObj,
width: 50,
height: 50,
// puts the image in teh middle of the canvas
x: randomPosition(0, 950), //imageX, //stage.getWidth() / 2 - 50 / 2,
y: randomPosition(30, 350), //imageY, //stage.getHeight() / 2 - 50 / 2,
draggable: true
});
Я не уверен, что это правильный способ сделать это, но я хочу использовать функцию mousedown
, чтобы «получить» любое изображение, на котором вызывается функция mousedown, и сохранить это конкретное изображение в переменной временно вместе со всеми его атрибутами (id, ширина, высота, x, y), чтобы я мог получить доступ к этим атрибутам для использования другими фрагментами кода.