如何在每个补间后运行一个函数(createjs / tweenjs)?

时间:2016-02-05 17:01:15

标签: javascript jquery createjs easeljs

我想在每个补间动画完成后运行一个函数。 我将通过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){

0 个答案:

没有答案