События мыши для объектов Canvas Draw
Я хочу создать основанное на холсте меню сайта с помощью этого плагина, чтобы создать эффект "умножения". Однако это, а также globalCompositeOperation работают с объектами ctx на том же холсте. (в context-blender он использует закадровый холст и использует информацию рисования, globalcompoperation смешивает тот же самый ctx). Я хочу создать события мыши (hover и click) для каждого объекта ctx, поэтому каждый ctx приведет к отдельному URL.
Вот мой тест:
function draw(){
var ctx = document.getElementById('canvasOff1').getContext('2d');
var ctx2 = document.getElementById('canvasReal').getContext('2d');
var ctx3 = document.getElementById('canvasOff3').getContext('2d');
// draw circles - each circle should link to different url and has its own focus
ctx.fillStyle = "#c7302a";
ctx.beginPath();
ctx.arc(50,75,35,0,Math.PI*2,true);
ctx.fill();
ctx2.fillStyle = "#395797";
ctx2.beginPath();
ctx2.arc(100,75,35,0,Math.PI*2,true);
ctx2.fill();
ctx3.fillStyle = "#454";
ctx3.beginPath();
ctx3.arc(150,75,35,0,Math.PI*2,true);
ctx3.fill();
var over = canvasOff1.getContext('2d');
var under = canvasReal.getContext('2d');
over.blendOnto(under,'multiply');
var over2 = canvasOff3.getContext('2d');
var under2 = canvasReal.getContext('2d');
over2.blendOnto(under2,'multiply',{destX:0,destY:0});
}
Хотелось бы узнать, как я могу реализовать jQuery здесь. Благодарю.
1 ответ
Вы не можете добавить прослушиватели событий в контекст, только на холст:
document.getElementById('canvasOff1').addEventLsitener(
'click',
function(){ goToUrl('http://www.test1.com'); }
);
document.getElementById('canvasReal').addEventLsitener(
'click',
function(){ goToUrl('http://www.test2.com'); }
);
document.getElementById('canvasOff3').addEventLsitener(
'click',
function(){ goToUrl('http://www.test3.com'); }
);
function goToUrl(url){
window.location = url;
}
Или с помощью jQuery:
$('#canvasOff1').on(
'click',
function(){ goToUrl('http://www.test1.com'); }
);
$('#canvasReal').on(
'click',
function(){ goToUrl('http://www.test2.com'); }
);
$('#canvasOff3').on(
'click',
function(){ goToUrl('http://www.test3.com'); }
);
function goToUrl(url){
window.location = url;
}
(Я предпочитаю использовать отдельную функцию для window.location = X
, но, конечно, вы также можете использовать его в onclick
функция, как это:
function(){ window.location = 'http://www.test1.com'; }