如何禁用和重新启用 MouseEvents;ButtonMode、mouseChildren 和enable 不起作用
-
07-07-2019 - |
题
基本上这个问题可能更准确地提出,我如何简单地禁用按钮然后重新启用它?我尝试将 ButtonMode 设置为 false,将 mouseChildren 设置为 false,并将启用设置为 false。什么都不起作用。我意识到我 可以 只需删除事件侦听器,但肯定有一种更优雅和更有效的方法。因为删除事件侦听器将迫使我跟踪与某些按钮状态相关的功能,并且必须一遍又一遍地添加和删除它们,这看起来很笨拙。
有没有办法设置一个标志,使对象可能具有的任何事件监听器暂时禁用,然后只需再次打开它们?我有一个误解,认为添加翻转事件等。理论上,将其转换为 MovieClip 为按钮,可以通过启用属性轻松关闭该按钮。另外,我无法使用 SimpleButton,因为我需要比它提供的更多的灵活性。
我创建了一个自定义类来处理所有这些功能,并使生活变得更加简单,但我想知道是否有一种开箱即用的官方方式。
下面是一个单独的示例,它在舞台上使用实例名称为 iPoo 的 MovieClip,无论您单击按钮时设置什么,事件始终会触发:
iPoo.addEventListener(MouseEvent.ROLL_OVER, pooRollOver);
iPoo.addEventListener(MouseEvent.ROLL_OUT, pooRollOut);
iPoo.addEventListener(MouseEvent.CLICK, pooClick);
函数 pooRollOver(_event:MouseEvent):void
{
iPoo.alpha = 0.5;
}
函数 pooRollOut(_event:MouseEvent):void
{
iPoo.alpha = 1;
}
函数 pooClick(_event:MouseEvent):void
{
trace("Poo");
iPoo.enabled = false;
iPoo.buttonMode = false;
iPoo.mouseChildren = false;
}