2010年5月5日 星期三

Android,Flash,Java EventListener比較

在Flash,Java,Android上對於事件的處理
同樣使用Listener,有著類似但有些差異的語法
以下以常用的滑鼠click事件做簡單比較

一.Flash
Flash在對於所有的Event統一使用addEventListner method來做監聽
主要傳入的兩個參數,分別是要監聽的事件類型與要觸發的function


btn:Button=new Button();
addChild(btn);
btn.addEventListner(MouseEvent.CLICK,onClickHandler)
function onClickHandler(e:MouseEvent):void{
    //..do something..
}


二.Java
在Java上要監聽不同的事件,要使用不同的addXXXListener method
例如addActionListener,addWindowListener...
每個不同的addXXXListener method所接收的參數
都是不同的Listner物件instance,
所要執行的動作則是在這Listner物件內 implement
要監聽的動作 handler


Button btn=new Button();
add(btn);
btn.addActionListener(myactionListener);
ActionListener myactionListener=new ActionListener(){
    public void actionPerformed(ActionEvent e) {
        //..do something..
    }
}


三.Android
在Android上同樣是對不同的事件,有不同的setXXXListener
每個setXXXListener所接收參數都是不同的listener物件
與Java的差異是method名稱addXXXListener與setXXXListener
的不同而已
例setOnClickListener ,setOnFocuseChangeListener,
setKeyListener..


Button btn=(Button)findViewById(R.id.mybtnid);
btn.setOnClickListener(myclickListener);
Button.OnClickListener myclickListener=new Button.OnClickListener(){
    public void onClick(View v){
        //..do something..
    }
}


沒有留言: