我想在每个补间动画完成后运行一个函数。 我将通过Domelements的for循环,对于表中连续的每一列,我正在做一个补间动画来移动该特定文本。
移动文本后,我设置alpha:0将其删除,并希望在该位置显示另一个DOMElement。我的问题是,当我在每个补间上运行我的tweenComplete函数时,我所处的两个for循环似乎已经完成,所以我无法从循环中捕获变量$ i和$ j。
这是我的代码:
for(var i = 0; i < tableRows; i++){ //for each row
for(var j = 0; j < tableColumns; j++){ //for each column in one row
...
var thisDOMElem = $("#animThis:not(.used)").get(0);
var textDOM = new createjs.DOMElement(thisDOMElem);
createjs.Tween.get(textDOM, {loop: false})
.wait(timeCount)
.to({y: calcPositionY, x: calcPositionX}, 1000, createjs.Ease.getPowIn(1))
.to({alpha: 0}, 500, createjs.Ease.getPowIn(1))
.to({alpha: 1, y: 0, x: 0}).call(tweenComplete);
function tweenComplete(){
var emptyTextPlace = $("#empty-table").find("tr:nth child("+rowCount+")").find("td:nth-child("+columnCount+")").find("span");
emptyTextPlace.css("visibility", "visible");
}
}
}
第一个补间动画完成后,得到的是只显示最后一个span-element,因为rowCount和columnCount总是相同,循环中的最后一个值。即使补间动画未完成,似乎for循环也会继续。有没有办法防止这种情况发生,所以tweenComplete函数在动画代码后运行?
修正了问题,感谢您的帮助! 为每个外部for循环添加了此功能。这使得循环内的函数完全按照它们的运行时间运行!
for(var i = 0; i < tableRows; i++) (function(i){