2009-09-16 83 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

相關問題