我正在使用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
的函数不再执行。
有什么想法吗?
答案 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函数。所有链式函数(如to
和call
假设返回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");});