我可以想象問題是什麼,但我似乎無法在簡單的上下文中重現。
這是一個'骯髒的黑客'... as2風格,基於MOUSE_LEAVE的東西。
input.onKillFocus = function(newFocus:Object) {
trace(this._name+" lost focus. New focus changed to: "+newFocus._name);
delete input._parent.onEnterFrame;
};
input.onSetFocus = function(oldFocus:Object) {
trace(this._name+" gained focus. Old focus changed from: "+oldFocus._name);
input._parent.onEnterFrame = trackMouse;
}
function trackMouse():Void{
if(input._xmouse < 0 || input._xmouse > (input._x + input._width)) onMouseOut();
if(input._ymouse < 0 || input._ymouse > (input._y + input._height)) onMouseOut();
}
function onMouseOut():Void{
Selection.setFocus(dummyBtn);
}
假設輸入是一個可選的文本字段。 如果文本字段是焦點,我添加一個enterFrame偵聽器來檢查鼠標是否在textfield之上或之外(使用input._xmouse,與全局_xmouse相反)。 如果鼠標位於文本區域之外,我將焦點更改爲一個虛擬對象(一個名爲dummyBtn的按鈕)。如果你在Firefox中,並且你在swf之外有一個選擇和發佈版本,這是有效的,因爲只要你離開文本框,焦點就轉移到dummyBtn。
我承認這有點粗糙,如果你仍然需要選擇或什麼的,所以讓我知道。
Goodluck。
我相信Selection.setFocus()並沒有停止就Flash而言「正在進行」的選擇。要查看該問題,請使用Firefox,並在任何帶有文本字段的Flash動畫中,在文本字段內單擊並拖動到整個Flash的外部。然後釋放鼠標,並用鼠標鍵將鼠標懸停在文本字段上。你會注意到選擇仍在繼續。 – Josh 2009-04-30 11:53:04