gpt4 book ai didi

flash - as3 删除事件监听器不工作

转载 作者:行者123 更新时间:2023-12-02 02:17:37 25 4
gpt4 key购买 nike

这让我发疯。为什么removeEventListeners 不起作用?

类构造函数

public function item(brand:String, title:String, price:Number, mp:Number, 
path:String, sb1:*, sb2:*):void

sb1:* 和 sb2:* 是对象 Hook 。

这些是分配的监听器:

_sb1.addEventListener("Changed", slideBarChanged); // Price
_sb2.addEventListener("Changed", slideBarChanged); // MegaPixels

该函数调用:

private function slideBarChanged(e:Event):void
{
switch(e.target.type)
{
case "Price":
if(int(e.target.currVal) > Math.abs(this.price))
{
this._active = false;
_sb2.removeEventListener("Changed", slideBarChanged);
}
else {
this._active = true;
_sb2.addEventListener("Changed", slideBarChanged);
}
break;

case "MegaPixels":
if(int(e.target.currVal) > Math.abs(this.mpixels))
{
this._active = false;
_sb1.removeEventListener("Changed", slideBarChanged);
}
else {
this._active = true;
_sb1.addEventListener("Changed", slideBarChanged);
}
break;
}

一切正常,但当项目变为 _active = false 时监听器不会被删除;实际上,这应该像这样工作:

如果价格太高,就忽略百万像素,只听价格。如果百万像素太高,则忽略价格,只听百万像素。

伤脑筋,非常感谢任何帮助。谢谢。

最佳答案

尝试

e.target.removeEventListener("Changed", slideBarChanged); 

相反
_sb1.removeEventListener("Changed", slideBarChanged); 

_sb2.removeEventListener("Changed", slideBarChanged);

另外,您应该为 addEventListener() 和 removeEventListener() 方法的类型参数解析常量而不是字符串文字。

const CHANGED:String = "changed";

_sb1.addEventListener(CHANGED, slideBarChanged);
_sb1.removeEventListener(CHANGED, slideBarChanged);

关于flash - as3 删除事件监听器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4938989/

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