使用addEventListener时怎么在匿名函数哪里传递event呢?
我的本意是在canvas画布上
弄一个跟随鼠标移动的图片;
以下是全部代码,html没有展示
var convas;
var context;
window.onload=function(){
//设置画布
canvas=document.getElementById("canvas");
canvas.height = 600;
canvas.width = 800;
//获取二维绘图上下文
context=canvas.getContext("2d");
//生成红色气泡
function RedBubble(redFile,redX,redY,redW,redH){
var imgRed= new Image();
imgRed.onload= function(){
context.drawImage(imgRed,redX,redY,redW,redH);
}
imgRed.src= redFile;
}
//获取当前鼠标位置
function getMousePos(event) {
var e = event || window.event;
return {'x':e.clientX,'y':e.clientY}
}
//红色气泡移动函数
function redMove(){
//记录下所有气泡的位置
//清除画布
context.clearRect(0, 0, canvas.width, canvas.height);
// 重新添加气泡
RedBubble("red.png",getMousePos(e).x,getMousePos(e).y,30,30);
}
//红色气泡添加移动函数
canvas.addEventListener("mousemove", function(e){
redMove();//这里有问题,鼠标移动事件不能传递
});
}
取消掉嵌套
这样可以达到目的
canvas.addEventListener("mousemove", function(e){
context.clearRect(0, 0, canvas.width, canvas.height);
RedBubble("red.png",getMousePos(e).x,getMousePos(e).y,30,30);
});
但是鼠标移动会有明显闪烁,不够流畅
是因为由于事件驱动画布绘制导致的吗?
在考虑使用定时器递归推动canvas绘制
而不是使用mousemove推动canvas绘制
一只名叫tom的猫
手掌心
相关分类