基本上问题可能更准确地被问到,我如何简单地禁用按钮然后重新启用它?我已经尝试将buttonMode设置为false,将mouseChildren设置为false并启用为false。什么都行不通。我意识到我可以只是删除事件监听器,但肯定有一种更优雅和有效的方式。由于删除事件监听器会迫使我跟踪哪些函数与某些按钮状态有关,并且必须反复添加和删除它们,这看起来很笨拙。
有没有办法设置一个标志,暂时禁用一个对象可能有的任何eventListeners,然后再将它们打开?我错误地认为将rollOver事件等添加到MovieClip会将其理论上转换为一个按钮,在该按钮中可以使用enabled属性轻松关闭。此外,我不能使用SimpleButton,因为我需要比它提供的更多的灵活性。
我创建了一个自定义类,它可以处理所有这些功能,让生活变得更简单,但我想知道是否有一种开箱即用的官方方式。
下面是一个孤立的示例,它使用实例名称为iPoo的舞台上的MovieClip,无论单击按钮时设置的内容如何,事件始终会触发:
iPoo.addEventListener(MouseEvent.ROLL_OVER,pooRollOver);
iPoo.addEventListener(MouseEvent.ROLL_OUT,pooRollOut);
iPoo.addEventListener(MouseEvent.CLICK,pooClick);
function pooRollOver(_event:MouseEvent):void
{
iPoo.alpha = 0.5;
}
function pooRollOut(_event:MouseEvent):void
{
iPoo.alpha = 1;
}
function pooClick(_event:MouseEvent):void
{
trace("Poo");
iPoo.enabled = false;
iPoo.buttonMode = false;
iPoo.mouseChildren = false;
}
答案 0 :(得分:2)
使用mouseEnabled属性。
mc.mouseEnabled = false;
来自livingocs的:
如果enabled如果启用设置为false,则禁用影片剪辑的“上”,“下”和“上”帧。影片剪辑继续接收事件(例如,mouseDown,mouseUp,keyDown和keyUp)。