You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用EaselJS与TweenJS时hsdissolve函数异常及TypeError问题排查

解决EaselJS/TweenJS中的TypeError及函数执行异常问题

我来帮你拆解代码里的问题,这些问题正是导致你遇到TypeError: createjs.Ticker.removeEventListener(...) is undefined以及hsdissolve函数执行不完整的原因:

1. 低级拼写错误导致事件找不到

你在hsdissolve和tick函数里把Ticker的标准事件名"tick"写成了"trun"——这可是致命的笔误!

// 错误写法,事件名拼写错误
createjs.Ticker.addEventListener("trun", stage, false);
// 正确写法应该是
createjs.Ticker.addEventListener("tick", stage, false);

同样,tick函数里移除事件的代码也要修正事件名:

// 错误写法
createjs.Ticker.removeEventListener("trun", stage, false);
// 正确写法
createjs.Ticker.removeEventListener("tick", stage, false);

因为Ticker根本不认识"trun"这个事件,当你尝试移除它时自然会抛出未定义错误。

2. 给Text绑定了不存在的"run"事件

你给Tneu(Text实例)绑定了"run"事件,但EaselJS里的DisplayObject子类(比如Text、Bitmap)根本不会触发这个事件——这部分逻辑完全走不通:

// 错误写法,Text没有run事件
Tneu.addEventListener("run", function(){
  createjs.Tween.get(Tneu).to({ alpha: 1 }, 1000).call(tick);
});

如果你想让Tneu在hsdissolve执行后直接淡入,直接启动Tween动画就行,不需要绑定这个不存在的事件:

// 正确写法:直接启动淡入动画
createjs.Tween.get(Tneu).to({ alpha: 1 }, 1000).call(tick);

3. Ticker监听冗余,没必要重复绑定

你在初始化流程里已经给Ticker绑定了stage的tick事件:

createjs.Ticker.addEventListener("tick", stage, false);

在hsdissolve里再次绑定同一个监听完全是冗余操作,还可能导致重复渲染,建议删掉这行重复代码。

修正后的核心代码片段

这里是修正后的hsdissolve和tick函数:

function hsdissolve() {
  // 如果确实需要移除之前的tick监听,用正确的事件名即可
  // createjs.Ticker.removeEventListener("tick", stage, false);
  var Tneu = new createjs.Text("Neu", "36px Arial", "#777");
  Tneu.alpha = 0;
  stage.addChild(Tneu);
  stage.update();
  // 直接启动淡入动画,无需绑定不存在的事件
  createjs.Tween.get(Tneu).to({ alpha: 1 }, 1000).call(tick);
}

function tick() {
  // 移除tick监听(如果业务上需要的话)
  createjs.Ticker.removeEventListener("tick", stage, false);
}

额外小提示

  • 记得打开浏览器开发者工具(F12)的控制台,这里会显示详细的错误栈,能帮你快速定位拼写、事件绑定这类低级问题。
  • EaselJS的Ticker默认会驱动TweenJS的动画,只要你初始化了Ticker,Tween的动画会自动运行,不需要给显示对象额外绑定奇怪的事件~

内容的提问来源于stack exchange,提问作者Orion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:20:41