當FL2.0不接受按鈕用on (keyPress "PageDown") and on (keyPress "PageUp")來控制RSK (右soft key) and LSK (左soft key)時,大家非不得已要開始使用Key listener來做按鈕控制。Key Listener其實很好用,但是前提是你不可以將它搞亂,不然會出現有趣的bug喔! 以下是一個簡單範例包含list menu外加 RSK 點選後會pop-up 一個詢問離開的視窗: 重點整理: 1. RSK and LSK key listener最好與其它操作的listener分開。 - 因為這個範例只有一層所以會看不出哪邊方便,但是如果你的程式是需要包含很多key event操作,每個listener都要寫入RSK的動作就太沒效率了。 2. removeListener的動作最好寫在listener object身上。 - 好處就是...你不用煩惱哪邊忘了remove掉而出現白癡的bug.... var _listener=new Object(); _listener.onKeyDown = function() { var code = Key.getCode(); if (code ==13) { Key.removeListener(this); } } 3.當詢問離開視窗pop-up後,整個程式的key event的控制會進入所謂的pause階段,所有跟現階段操作有關的key listeners都應該先被移除掉。 - Key._listeners, 會回傳所有被註冊在Key裡的listeners, 回傳型態Array - 利用一個新的Array 拷貝 Key._listeners _cacheListeners = new Array(); _cacheListeners = _cacheListeners.concat(Key._listeners); for (var i in _cacheListeners) { Key.removeListener(_cacheListeners[i]); } - 當然要記得在離開pop-up 視窗後將所有該用的listeners註冊回去 for (var i in _cacheListeners) ...