我使用以下函数动态创建了一个画布:
var animating=false;
function create_canvas(Container,Id,Width,Height)
{
...//set width,height
//added a click event listener
document.getElementById(Id).addEventListener("click", function ()
{
if(animating==true)
{
alert("Running the animation"); //can't reach this part
return;
}
else
{
animating=true;
run_canvas();
animating=false;
}
});
...//append to Container
}
function run_canvas()
{
...//some code here
}
现在每当我点击画布时,无论如何动画都会启动。我的意思是全局变量动画不会改变它的值。因此我的问题是:我做错了什么,我应该如何应对这种情况。
答案 0 :(得分:3)
run_canvas
方法可能异步执行其动画代码,但是在动画开始后立即执行将animating
属性设置为false的语句。您需要在run_canvas
方法完成动画时将属性设置为false,或者在完成时触发事件并在事件处理程序中设置属性。