2009-12-29 37 views

回答

2

SetEventHandler幾乎做什麼它在錫說。對於給定的狀態,您可以爲所選事件定義事件處理程序。您提供了用於定義事件的參數,用於響應事件的函數以及調度事件的目標對象。 adobe docs非常清楚。

如果我正確理解你的問題,你想刪除一個事件處理程序,而不是設置一個不同的狀態。如果是這種情況,那麼你有幾個選項,你可以爲每個狀態定義一個不同的處理程序,其中一些不做任何處理,或者你可以在給定狀態的SetEventHandler賦稅函數定義中定義空值。

<mx:State name="hasHandler"> 
    <mx:SetEventHandler name="click" handlerFunction="doClick" target="{myClickableObject}"/> 
<mx:State/> 
<mx:State name="hasNoHandler"> 
    <mx:SetEventHandler name="click" target="{myClickableObject}"/> 
<mx:State/> 

離開handlerFunction未定義將其設置爲空。

但是,我會做的只是爲那些需要它們的狀態定義SetEventHandlers。你應該能夠設置你的狀態邏輯,這樣你永遠不需要移除事件處理程序,只需設置它們。我認爲這更接近SetEventHandler的預期用途,並且可以節省您不得不依賴於爲某些州設置空值的情況。

HTH。如果你的谷歌「Flex SetEventHandler」有很多關於它的好資源。

P.S.如果您要使用此方法,請確保您的默認狀態沒有特別處理該事件。

+0

謝謝,這正是我所需要的。我知道我應該小心不正確地使用刪除事件處理程序。我的問題主要是關於標籤的概念。 除了你的代碼行之外:第二行到最後一行應該是: '' 爲了移除'click'事件處理特別是'myClickableObject' – 2009-12-29 16:42:26

+0

感謝您的代碼糾正,你當然是對的。我更新了上面的代碼以反映這一點。 – Simon 2009-12-29 17:00:21