2009-09-16 44 views
0

基本上问题可能会更准确地问,如何简单地禁用一个按钮,然后重新启用它?我试着将buttonMode设置为false,将mouseChildren设置为false并将其设置为false。什么都没有我意识到我可能只是删除事件监听器,但肯定有一个更优雅和有效的方式。由于删除事件监听器会迫使我跟踪与某些按钮状态有关的功能,并且必须一遍又一遍地添加和删除它们,这看起来很笨重。如何禁用并重新启用MouseEvents; buttonMode,mouseChildren并启用不起作用

有没有办法设置一个标志,使临时禁用任何事件对象可能有的事件监听器,然后再简单地打开它们?我有一种误解,认为将RollOver事件等添加到MovieClip中会将其理论上转换为一个按钮,在该按钮中可以使用enabled属性轻松关闭该按钮。另外,我不能使用SimpleButton,因为我需要比它提供的更多的灵活性。

我创建了一个处理所有这些功能并使生活更简单的自定义类,但是我想知道是否有作为开箱即用的官方方式。

下面是一个孤立的例子,在舞台上使用的电影剪辑与IPOO,实例名称,其中的事件总是无论何时你点击按钮得到什么设置的火:

iPoo.addEventListener(的MouseEvent。 ROLL_OVER,pooRollOver);
iPoo.addEventListener(MouseEvent.ROLL_OUT,pooRollOut);
iPoo.addEventListener(MouseEvent.CLICK,pooClick);

功能pooRollOver(_event:MouseEvent)方法:无效
{

iPoo.alpha = 0.5; 

}

功能pooRollOut(_event:MouseEvent)方法:无效
{

iPoo.alpha = 1; 

}

功能pooClick(_event:MouseEvent)方法:无效
{

trace("Poo"); 

iPoo.enabled = false; 
iPoo.buttonMode = false; 
iPoo.mouseChildren = false; 

}

回答

2

使用mouseEnabled属性。

mc.mouseEnabled = false; 

从LiveDocs中:

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

+0

谢谢,真的很感谢帮助。完美的作品。男人,我不知道我是如何错过的,特别是考虑到FlashDevelop具有智能感知! – 2009-09-16 09:05:30

+0

如果您有对象X,该怎么办? Y是X的孩子,Z也是X的孩子。你想检测Y不是Z. – 2012-09-06 13:12:25

相关问题