HTML5 Canvas 中的 CreateJS / Animate CC 中的事件侦听器不断增加

event listeners ever multiplying fires in CreateJS / Animate CC in the HTML5 Canvas

动画 CC,HTML5 Canvas。我有一个带有多个点击退出的动画,用于 twitter、facebook 等。动画有一个重复按钮。在第一次播放时,当我单击推特退出时,只打开一个推特页面,在第二次播放中,我单击相同的退出按钮,它会打开两个推特页面,(如此循环往复。如果我点击重复 50 次如果能打开 50 个推特页面 :))。

这是第 342 帧中的一个代码片段:

root.twBtn.addEventListener("click", fl_MouseOverHandler_2.bind(this));

var frequency = 3;
stage.enableMouseOver(frequency);

function fl_MouseOverHandler_2(){
    window.open(clickTag1, "_blank");
}

我尝试在同一帧上删除事件侦听器(在重播功能中),但我仍然遇到同样的事情,每次点击标签 1 等被触发时 windows 的 +1 打开重播广告。我怎样才能解决这个问题?我不确定事件侦听器是否真的被删除,或者发生了什么。

// Replay
root.reBtn.on("click", function(evt){
    root.twBtn.removeEventListener("click", fl_MouseOverHandler_2);
    root.gotoAndPlay("start");
});

基本上每次我重放动画时,我的听众都会触发 +1 次。我尝试了 here 解决方案,但它在我的情况下不起作用。我该如何解决这个问题?

好的,我解决了。

我在 Animate CC Frame 1 (createjs's frame 0) 上添加了 root.x = 1;,横幅从 Animate CC Frame 2 (createjs's frame 1) 重播(所以它从不播放帧 root.x 原来是再次定义),我关闭了下面的事件监听器代码,包装在 if 语句测试 root.x 中。它对我有用。

if (root.x === 1){
root.twBtn.on("click", function(evt){
    window.open(clickTag1, "_blank");
    y=y+1;  
    })
};