动态创建画布并添加鼠标按下功能
Dynamically create Canvas and add onmousedown functionality
我需要在运行时动态创建多个画布元素。我已经设法很好地创建了画布,但是将"onmousedown"属性设置为一种方法已被证明是困难的。这可能是我需要通过函数传递 canvas 元素的 bacuse,尽管我不确定。谁能帮忙?
谢谢!
下面您可以按顺序看到:原始静态画布,动态创建画布的循环以及我需要设置为"onmousedown"的功能。
<canvas id="Canvas1" onmousedown="MouseDown(this, event)" onmousemove="MouseMove(event)" onmouseup="MouseUp(event)" width="0" height="600" style="overflow: hidden; position: absolute; top: 0px;">
for(var i = 1; i < total; i++)
{
var div = document.getElementById("Control");
var canv = document.createElement('canvas');
canv.id = "Canvas" + i.toString();
canv.width= 0+'px';
canv.height= 600+'px';
canv.style.overflow = 'hidden';
canv.style.position = 'absolute';
canv.style.top = 0+'px';
div.appendChild(canv);
}
function MouseDown(can, e)
{
MovingCanvas = can;
alert("got here");
clicked = true;
MouseX = e.clientX;
MouseY = e.clientY;
StartX = MovingCanvas.style.left;
StartY = MovingCanvas.style.top;
}
只需在循环中添加回调处理程序:
for(var i = 1; i < total; i++) {
--- 8X ---
/// add a callback handler here by referencing the function
canv.onmousedown = MouseDown;
div.appendChild(canv);
}
请注意,这只会给出一个参数,即事件。但是没有必要,因为回调会将调用回调的当前画布绑定为 this
;所以你可以修改你的回调函数:
/// callback only gives one argument to the function, the event
function MouseDown(e) {
/// this will be current canvas that called this function
MovingCanvas = this;
--- 8X ---
}
然后当然也需要修改:
<canvas id="Canvas1" onmousedown="MouseDown(event)" ...
^^^^^
相关文章:
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 当我用鼠标左键点击时,让这个功能工作起来
- 单击鼠标时如何停止重复功能
- 我的鼠标向下功能不是从最近的点画线,而是从左上角画线
- 如何在保持鼠标悬停功能的同时居中跨过图像
- 鼠标退出时恢复功能
- 继续功能,直到释放鼠标为止
- 鼠标悬停功能获胜'不起作用
- css图片精灵到javascript鼠标功能
- 有没有办法在jquery中停止和开始触发鼠标移动功能
- 如何使鼠标输入功能具有淡入淡出效果并保持在那里
- 悬停/鼠标悬停功能冲突
- 包含鼠标向上/向下功能
- 高图表.js添加鼠标悬停功能或悬停状态(实现中断图表?
- jQuery UI 自动完成功能将焦点放在鼠标输出上
- 鼠标事件触发但未执行功能
- 动态创建画布并添加鼠标按下功能
- 如何在鼠标退出时删除 JS 悬停功能
- 在页面加载时禁用鼠标悬停功能3秒钟
- 如何在鼠标功能下获得顶级对象