createjs 游戏结束后重新开始 Tween 补间动画无效

Fork Me On Github
zodream 游戏 JavaScript 2020年05月

问题描述

当游戏结束了,重新开始发现使用 Tween 的补间动画不起作用了。

解决方法

在 github 的 issues 找到同样的问题

 
Tween._inited does not reset if scene is being destroyed or removed inside the game and rebuild
1

意思就是 Tween 上的一个 _inited 私有属性没有更新,只要增加一句代码就行了

js
 
Tween._inited = undefined;
1

但这种方法肯定是不友好的,但是 Tween 又没有提供 reset 方法,

最后通过查看源码,发现是 createjs.Ticker 引起的

当执行 createjs.Ticker.reset() 会清空所有 tick 事件监听,而 Tween 又没有收到通知,没法更新 _inited 属性,导致 Tween 不会重新添加事件监听 createjs.Ticker.addEventListener("tick", Tween)

所以,要么不要使用 createjs.Ticker.reset(),要么使用

js
  
createjs.Ticker.reset();
createjs.Tween._inited = undefined;
12
点击查看全文
标签: createjs
0 255 0