Я пытаюсь сделать какую-то интерактивную карту с KineticJS, где зависшие места заставляют загружать другие изображения. Но я не могу правильно работать с событиями мыши. Дело в том, что все работает нормально , но только с первой попытки наведения мыши, и когда я зависать во второй раз, MouseOut триггер не работает :(Проблема с событием мыши KineticJS
т.е. Когда я делать «MouseOut» во второй раз, я хочу карту часть будет светло-голубой снова (n_amer изображения), но remeins темно-синий (n_amer_sel изображение)
Вот ссылка, где вы можете увидеть эту ошибку:. http://kinlibtst.elitno.net/
Я был бы очень благодарен за помощь !
Код:
function loadImages(sources, callback) {
var assetDir = 'PROJECT/';
var images = {};
var loadedImages = 0;
var numImages = 0;
for(var src in sources) {
numImages++;
}
for(var src in sources) {
images[src] = new Image();
images[src].onload = function() {
if(++loadedImages >= numImages) {
callback(images);
}
};
images[src].src = assetDir + sources[src];
}
}
function initStage(images) {
var stage = new Kinetic.Stage({
container: 'container',
width: 900,
height: 452
});
var imagesLayer = new Kinetic.Layer();
// img vars
var n_amer = new Kinetic.Image({
image: images.n_amer,
x: 0,
y: 0
});
var n_amer_sel = new Kinetic.Image({
image: images.n_amer_sel,
x: 0,
y: 0
});
// mouse events
n_amer.on('mouseover', function() {
imagesLayer.add(n_amer_sel)
stage.draw();
});
n_amer_sel.on('mouseout', function() {
imagesLayer.remove(n_amer_sel);
stage.draw();
});
// imageBuffer for transparent pixels
n_amer.createImageBuffer(function() {
imagesLayer.drawBuffer();
});
n_amer_sel.createImageBuffer(function() {
imagesLayer.drawBuffer();
});
// add to stage
imagesLayer.add(n_amer);
stage.add(imagesLayer);
}
window.onload = function() {
var sources = {
n_amer: 'N-Amer.png',
n_amer_sel: 'N-Amer_sel.png'
};
loadImages(sources, initStage);
};
В конце концов, ваша идея лучше всего в конце :) Однако есть ошибка с прозрачностью (createImageBuffer()), но, к счастью, она ничего не разрушает. Спасибо! – nuclearpeace