基本上这个问题可能更准确地提出,我如何简单地禁用按钮然后重新启用它?我尝试将 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;  

}

有帮助吗?

解决方案

使用 鼠标启用 财产。

mc.mouseEnabled = false;

来自实时文档:

如果 已启用 如果启用设置为 false,则影片剪辑的 Over、Down 和 Up 帧将被禁用。影片剪辑继续接收事件(例如,mouseDown、mouseUp、keyDown 和 keyUp)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top