Javascript:在css动画之后继续执行
Javascript: Continue exection after css animation
我有一个带有人工智能的"自滑拼图"应用程序等。我会用它来制作一些很酷的投资组合库。
我有一个方法,只是动画立方体:
this.animateSelection = function(direction,time)
{
if (time===undefined) this.time=150;
this.moveDistance=this.cubeSize+this.spacing;
switch (direction)
{
//move right
case 'r': $('#' + selectionName).transition({ x: '+=' +this.moveDistance +'px' },this.time);
break;
//move down
case 'd': $('#' + selectionName).transition({ y: '+=' +this.moveDistance +'px' },this.time);
break;
//move left
case 'l': $('#' + selectionName).transition({ x: '-=' +this.moveDistance +'px' },this.time);
break;
//move up
case 'u': $('#' + selectionName).transition({ y: '-=' +this.moveDistance +'px' },this.time);
break;
//if wrong direction is given
default: return false;
}
return true;
}
当我称之为单一时间时,一切都很酷。
但问题是:
当我做时
myClass.animateSelection('d');
alert('bla bla bla');
在动画完成之前显示警报
我的主要AI循环在50毫秒内执行,并管理大约200次移动,所以调用方法。我希望该方法保持循环的执行,直到动画完成。
回调不成功。动画方法在许多不同的情况下使用,也被各种其他方法使用。不可能让它适合IMO.
如果使用myClass.animateSelection
,则脚本的执行在到达$().transition
时不会停止。相反,transition将设置一些简单的transition效果的队列,这些效果将在事件循环中调用。
这被称为异步行为,其优点是脚本不会停止。然而,大多数异步函数都会将回调作为可选参数,在函数所需效果结束或失败后调用该参数。
在您的情况下,transition
支持回调作为附加参数:
$.fn.transition(options, [duration], [easing], [callback]);
您必须更改animateSelection
才能接受回调参数:
this.animateSelection = function(direction,time,callback)
{
if (time===undefined) this.time=150;
this.moveDistance=this.cubeSize+this.spacing;
switch (direction)
{
//move right
case 'r': $('#' + selectionName).transition({ x: '+=' +this.moveDistance +'px' },this.time,callback);
break;
//move right
case 'd': $('#' + selectionName).transition({ y: '+=' +this.moveDistance +'px' },this.time,callback);
break;
//move right
case 'l': $('#' + selectionName).transition({ x: '-=' +this.moveDistance +'px' },this.time,callback);
break;
//move right
case 'u': $('#' + selectionName).transition({ y: '-=' +this.moveDistance +'px' },this.time,callback);
break;
//if wrong direction is given
default: return false;
}
return true;
}
并使用
myClass.animateSelection('d',undefined,function(){alert('bla bla bla');});
相反。
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 在chrome.tabs.onCreated之后加载HTML页面
- 在Jquery detachment()和appendTo()之后定位元素
- AngularJS:ng之后,重复$scope值未按预期更新
- 为什么元素的宽度在页面加载之后和那一刻之后不同
- 没有在Angular应用程序中定义firebase(在firebase迁移之后)
- Javascript复选框函数:;缺少:在属性id之后"
- 在刚刚调用的append函数之后,jquery.height()不会返回实际值
- 为什么继续;语句冻结浏览器
- Javascript,如果继续到else之后
- Javascript:在css动画之后继续执行
- 浏览器在“打开”之后继续执行Javascript;PageUnload”&新的“;PageLoad”;
- Jquery在ajax$.post之后各不继续
- Android: Javascript函数在eval()之后不继续
- Angular bootstrap-select在选择之后继续显示选项
- 滑块,在第5张幻灯片之后,倒带需要更改以继续前进
- 在生成器函数之后继续的正确方法
- 即使在iframe重定向到不同的url之后,也要继续将元素写入iframe
- 如何暂停表单提交,最后一次验证,在最后和之后释放/触发/继续提交
- Javascript函数只在'else'之后继续