gpt4 book ai didi

javascript - Canvas 绘制对象的鼠标事件

转载 作者:行者123 更新时间:2023-12-02 19:03:02 25 4
gpt4 key购买 nike

我想使用 this 创建基于 Canvas 的站点菜单插件,创建“乘法”效果。然而这个,还有globalCompositeOperation ,正在同一 Canvas 中处理 ctx 对象。 (在 context-blender 中,它使用离屏 Canvas 并使用其绘制信息,全局计算混合相同的 ctx)。我想为每个 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。谢谢。

最佳答案

您无法将事件监听器添加到上下文,只能添加到 Canvas :

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'; }

关于javascript - Canvas 绘制对象的鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14592120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com