添加EventListener后,Tween.js不调用调用函数

时间:2016-02-26 11:35:23

标签: javascript html5 tween

我正在使用tween.0.6.2并遇到了问题。

Follwing代码段(取自the tween.js Getting Started site 并略微简化)就像它应该的那样:

            createjs.Tween.get(circle)
                .to({x: 400}, 1000, createjs.Ease.getPowInOut(4))
                .call(function() {console.log("tween finished");});

补间完成后(圆圈已移至x = 400),执行传递给call的函数。

但是在添加了事件处理程序之后:

            createjs.Tween.get(circle)
                .to({x: 400}, 1000, createjs.Ease.getPowInOut(4))
                .addEventListener("change", function() {console.log("tween changed");} )
                .call(function() {console.log("tween finished");});

传递给call的函数不再执行。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

对于每个人都在磕磕绊绊:经过一些实验,我发现这有效:

           createjs.Tween.get(circle)
                .to({x: 400}, 1000, createjs.Ease.getPowInOut(4))
                .call(function() {console.log("tween finished");})
                .addEventListener("change", function() {console.log("tween changed");} )

看来,call的来电必须先于addEventListener的来电。

编辑:

仍未按预期方式工作:在上面的示例中,事件侦听器在(!)传递给call的函数执行后再被调用一次。

关于为什么会发生这种情况的想法仍然受到欢迎......

答案 1 :(得分:-1)

addEventListener不是tween-js函数。所有链式函数(如tocall假设返回this对象(Tween实例)和addEventListener返回undefined。因此,上次call()会调用undefined

您必须使用onUpdate代替addEventListener

         createjs.Tween.get(circle)
                .to({x: 400}, 1000, createjs.Ease.getPowInOut(4))
                .onUpdate(function() {console.log("tween changed");} )
                .call(function() {console.log("tween finished");});