如何禁用和重新启用MouseEvents; buttonMode,mouseChildren和enable不起作用

时间:2009-09-16 08:19:12

标签: flash actionscript-3 actionscript event-listener

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

}

1 个答案:

答案 0 :(得分:2)

使用mouseEnabled属性。

mc.mouseEnabled = false;
来自livingocs的

  

如果enabled如果启用设置为false,则禁用影片剪辑的“上”,“下”和“上”帧。影片剪辑继续接收事件(例如,mouseDown,mouseUp,keyDown和keyUp)。