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

标签 flash actionscript-3

这让我发疯。为什么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/

相关文章:

flash - 为什么我不应该使用 Flash?

flash - HTML5 音频标签 flash 回退

actionscript-3 - 从 AS2 到 AS3 _root 相当于什么?

flash - Flash/AS3 中的 RFC 时间戳

actionscript-3 - ActionScript 编译器 UncaughtErrorEvent

actionscript-3 - 导入3D补间动画片段时出现Flash AS3错误

php - 在代码中使用 Julian Dates 有好处吗?

javascript - 使用 ExternalInterface 从 JavaScript 调用 ActionScript 3.0/Flash 中的函数

JavaScript:如何将 Flash 文件 (SWF) 动态添加到 DOM 以便 IE 加载它

actionscript-3 - 使用 AS3 的 hitTest 和 bitmapData 进行半碰撞