gpt4 book ai didi

javascript - Animate/EaselJS - removeEventListener 不工作

转载 作者:行者123 更新时间:2023-11-29 21:11:08 28 4
gpt4 key购买 nike

我对 Adob​​e Animate CC 及其使用的 Javascript 框架 EaselJS/CreateJS 有疑问。我可以添加没有问题的事件监听器,但我无法删除它们。我从调试器中尝试了各种方法,包括进入他们的 JS removeEventListener 处理程序 - 虽然这两个变量看起来相同,但它们永远不会 ==(或 ===),因此偶数监听器不会被删除。

这是我使用的代码,它的目的是在将鼠标悬停在某个元素上时淡入:

this.fadeIn = function(target_mc)
{
target_mc.alpha = 0;
target_mc.visible = true;

target_mc.removeEventListener("tick",fadeIn_onEnterFrame);
target_mc.addEventListener("tick",fadeIn_onEnterFrame.bind(this));

function fadeIn_onEnterFrame(evt)
{
evt.currentTarget.alpha = evt.currentTarget.alpha + .2;
if (evt.currentTarget.alpha >= 1)
{
evt.currentTarget.removeEventListener("tick",fadeIn_onEnterFrame);
} // end if
}
} // End of the function

所以你知道,它被添加到 frame_0 中的 Canvas ,并从添加到每种服装类型的“鼠标悬停”监听器调用(它用于拖放式装扮游戏,FWIW)

function clothing_onRollOver()
{
this.hint_mc.desc_mc.desc1_txt.text = this.articleName;
this.fadeIn(this.hint_mc);
this.clothingOver = true;
};
clothing.addEventListener("mouseover",clothing_onRollOver.bind(this));

最佳答案

您的代码似乎存在一些范围界定问题。下面的代码片段解决了您的问题并正确删除了事件监听器,但是我不知道为什么您当前的实现无法正常工作。

区别在于我已经从 target_mc.addEventListener("tick",fadeIn_onEnterFrame.bind(this));

中删除了绑定(bind)

但是我不确定为什么 .bind() 会导致这个问题。

stage.enableMouseOver();

clothingOver = false;

this.hint_mc.visible = false;

this.fadeIn = function(target_mc)
{
console.log(target_mc);

target_mc.alpha = 0;
target_mc.visible = true;

target_mc.removeEventListener("tick",fadeIn_onEnterFrame);
target_mc.addEventListener("tick",fadeIn_onEnterFrame);

function fadeIn_onEnterFrame(evt)
{
console.log("tick");
evt.currentTarget.alpha = evt.currentTarget.alpha + .2;

if (evt.currentTarget.alpha >= 1)
{
evt.currentTarget.removeEventListener("tick", fadeIn_onEnterFrame);
} // end if
}
} // End of the function



function clothing_onRollOver()
{
//this.hint_mc.desc_mc.desc1_txt.text = this.articleName;
this.fadeIn(this.hint_mc);
this.clothingOver = true;
};


this.clothing.addEventListener("mouseover",clothing_onRollOver.bind(this));

抱歉,我无法为您确定确切的根本原因。

关于javascript - Animate/EaselJS - removeEventListener 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41816274/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com