2009-04-29 22 views
2

有沒有解決Adobe Flash的問題,如果將鼠標拖到電影之外,Flash Movie沒有收到鼠標向上的事件?對於選擇不停止的Flash錯誤,是否有解決方法?

編輯:這個問題似乎影響到火狐只有

參見:http://bugs.adobe.com/jira/browse/FP-234

基本上問題是,我有一個Flash影片包含一個文本框,如果用戶點擊文本框並拖動以選擇(突出顯示)文本,然後拖動到Flash動畫之外並釋放鼠標,然後FLash動作不會收到鼠標釋放事件,即使鼠標處於啓動狀態,也會在頁面上移動光標繼續更改閃光燈內的選定文字。

許多人建議使用ActinScript來監聽MOUSE_LEAVE事件,但有兩個問題。其一,我使用的是AS2而不是AS3,其次,如果在離開舞臺時鼠標被按下,MOUSE_LEAVE似乎不會觸發。

編輯2: George Profenza的「骯髒的黑客」已經爲我工作了好幾個月......但截至8月24日,我現在看到Adobe已經標記爲已解決問題,最後!

回答

2

我可以想象問題是什麼,但我似乎無法在簡單的上下文中重現。

這是一個'骯髒的黑客'... 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。

+0

我相信Selection.setFocus()並沒有停止就Flash而言「正在進行」的選擇。要查看該問題,請使用Firefox,並在任何帶有文本字段的Flash動畫中,在文本字段內單擊並拖動到整個Flash的外部。然後釋放鼠標,並用鼠標鍵將鼠標懸停在文本字段上。你會注意到選擇仍在繼續。 – Josh 2009-04-30 11:53:04

相關問題