讓文字欄位的編輯與delete按鍵處理程式不互相衝突

當我們把Delete、方向鍵等按鈕設為驅動函式的熱鍵時,如果畫面上又有文字欄位要讓使用者輸入字串,那麼使用者在文字欄位內使用Delete、方向鍵等按鍵時,也會讓先前指定給該按鍵的函式被也被執行。要避免這種狀況產生,可以加上一個變數,紀錄是否有文字自欄位被設定為焦點。
這裡是範例檔案
注意:在Flash內預覽的時候,可能會發現按鈕沒有作用。把Ctrl->Disable Keyboard Shortcuts打勾,就可以解決了。

// isTextFocused 代表textField1是否為焦點
var isTextFocused = false;
//當del被按下且textField1不是焦點時,box左移
keyControl = new Object();
keyControl.onKeyDown = function() {
if (Key.isDown(46) && isTextFocused == false) {
box._x = box._x-5;
}
};
Key.addListener(keyControl);
//當textField1被設為焦點時,isTextFocused設定為true
textField1.onSetFocus = function(oldFocus) {
isTextFocused = true;
debugField.text = isTextFocused;
};
//當textField1被移出焦點時,isTextFocused設定為false
textField1.onKillFocus = function(newFocus) {
isTextFocused = false;
debugField.text = isTextFocused;
};

comments powered by Disqus