2014-09-05 93 views
0

工作,我有一個奇怪的問題... 我嘗試建立一個按鈕的onclick做一些事情(我不經常使用的事件,因爲我需要與事件傳送數據)。 我構建了一個UIButon類,並在父類中創建了他的一個實例。 創建自定義事件類:調度自定義事件不haXe的

package ; 
import openfl.events.Event; 

/** 
* ... 
* @author Michael 
*/ 
class ChangeWinEvent extends Event 
{ 
    public static inline var CHANGE_WINDOW:String = "changeWindow"; 



    public var _winToClose:String; 
    public function new(name:String, winToClose:String, bubbles:Bool=false, cancelable:Bool=false) 
    { 
     super(type, bubbles, cancelable);  
     _winToClose = winToClose; 
    } 

} 

,我派遣CHANGE_WINDOW事件是這樣的:

dispatchEvent(new ChangeWinEvent(ChangeWinEvent.CHANGE_WINDOW,"LoginWin")); 

,並聽取這一事件在父類:

_loginBtn.addEventListener(ChangeWinEvent.CHANGE_WINDOW, handleChangeWindows); 

謝謝幫手! 邁克爾

回答

0

超級(類型,氣泡,或取消選擇);

...顯然需要從類型的實例字段中鍵入變量(如你有構造函數的參數命名爲名稱,而不是類型),所以它是空,你還沒有註冊空事件類型的任何監聽器。

+0

hhhh我不相信我沒有看到它><但是......它也發生在最好的狀態:D謝謝 – Michael 2014-09-06 19:30:56

3

您也可以重寫clone方法。看看這個自定義事件類目前我使用:

/** 
* Custom button event used for communication 
* between button classes and their respective 
* views. 
* @author Tiago Ling Alexandre 
*/ 
class ButtonEvent extends Event 
{ 
    public static var ACTIVATE:String = "Activate"; 

    public var data:Dynamic; 

    public function new(type:String, data:Dynamic, bubbles:Bool = false, cancelable:Bool = false) 
    { 
     super(type, bubbles, cancelable); 
     this.data = data; 
    } 

    override public function clone():Event 
    { 
     return new ButtonEvent(type, bubbles, cancelable); 
    } 
} 

從你的類唯一的區別是clone()方法。這是缺失的一塊。

Regards,