我基本上有这个代码:
for (var i = 0; i < num; i++) {
ShowCard(i);
}
现在,ShowCard 只是添加一个 DOM 元素,但我希望它有一个动画,显示这张卡片从其他地方(鞋)飞到它的最终目的地,我希望第二张卡片等到第一张在它开始之前完成飞行。
有没有办法实现这一点,而无需以“继续传递”风格重写我的整个代码?
我假设答案是否定的,我将不得不硬着头皮去做,但我想我会问。
谢谢!
丹尼尔
我基本上有这个代码:
for (var i = 0; i < num; i++) {
ShowCard(i);
}
现在,ShowCard 只是添加一个 DOM 元素,但我希望它有一个动画,显示这张卡片从其他地方(鞋)飞到它的最终目的地,我希望第二张卡片等到第一张在它开始之前完成飞行。
有没有办法实现这一点,而无需以“继续传递”风格重写我的整个代码?
我假设答案是否定的,我将不得不硬着头皮去做,但我想我会问。
谢谢!
丹尼尔
答案是不。
JavaScript 中唯一的阻塞 API 是内置的-alert
和.confirm
prompt
你可以试试 jQuery 的新deferred
API。
您可以输入一个全局锁定变量inMotion
,指示第二张卡不能移动。然后在调用第二张卡片移动的代码中,您可以检查此布尔值,如果不是移动时间,请使用 setTimeout 或 setInterval 连续调用您的方法,直到移动它为止。
Evil hack:不要使用 setTimeout 和friends(放弃控制流的函数)让你的动画工作,而是使用while循环、自旋锁风格让它们以愚蠢的方式工作。在伪代码中:
next_time = curr_time + delta;
while(get_time() < next_time){} //Do nothing