【发布时间】:2013-07-25 19:31:32
【问题描述】:
我基本上有两个这样的画布:
<canvas id="canvas1" class="canvases" ></canvas>
<canvas id="canvas2" class="canvases" ></canvas>
而且因为它们正在运行 Processing.js 并且它们会变得很重,所以我在 jQuery 中对两个按钮都应用了 mouseover 和 mouseout 事件,如下所示:
num_canvases = 2;
canvasArray = [];
for (i = 0, i < num_canvases, i++) {
canvasArray.push(Processing.getInstanceById('canvas'+i);
}
$('#canvas1').mouseover(function () {
if (!force_play_all) {
canvasArray[0].pause_or_resume(false);
};
});
$('#canvas2').mouseover(function(){
if (!force_play_all) {
canvasArray[1].pause_or_resume(false);
};
});
等等……
但现在我正在扩展到 20 个画布,并且正在寻找一种方法来将相同的鼠标悬停事件应用于每个画布,并在鼠标悬停的任何地方执行 pause_or_resume。我不能每堂课都应用它,否则他们都会开或关。我在想这样的事情,但它仍然不起作用。想法? :
$('.canvases').mouseover(function () {
for (var i = 0; i <= numVars-1; i++) {
var name_holder = '#canvas'+(i+1);
$(name_holder).mouseover(function () {
canvas_instance = Processing.getInstanceById('canvas'+i);
if (pause_boolean) {
console.log(name_holder);
console.log(canvas_instance);
canvas_instance.pause_or_resume(pause_boolean);
};
});
};
});
【问题讨论】:
-
请问您为什么使用 20 个画布而不是一个分成 20 个部分的画布?
-
另外,为什么要嵌套
mouseover事件?看起来你可以只使用第一个mouseover并使用this.doSomething格式 -
如果你想暂停当前有
mouseover的那个,它会是这样的:$('.canvases').mouseover(function () { if (this.pause_or_resume()) { console.log(name_holder); console.log(canvas_instance); this.pause_or_resume(pause_boolean); };我不确定你的.pause_or_resume函数是如何工作的
标签: jquery events canvas mouseover