2009-12-17 161 views
0

AS2中AS3代碼的等效代碼是什麼?AS2中Event.MOUSE_LEAVE的等價物

stage.addEventListener(Event.MOUSE_LEAVE, callbackFunc); 

private function callbackFunc(e:Event):void { 
    // do something 
} 
+0

我環顧四周,似乎每個人都依靠估計光標的前一個動作,以確定它是否會通過使用輸入框架事件離開舞臺,但這不可靠並且性能會受到影響。像這樣的事情讓我很高興我只用AS3進入Flash :) – Aaron 2009-12-17 17:17:52

回答

1

我這個掙扎了一會兒,最終使用Flash HTML對象的JavaScript事件偵聽器,然後綁到Flash的外部接口中,爲鼠標懸停事件發生時設置標誌。這似乎沒有任何錯誤完美的工作。

1

起初我以爲這只是一個rollout-

stage.onRollOut = function(){ 
    //the action could occur here 
} 

這似乎並沒有正常工作......不過話又說回來了;您可以將舞臺定義爲MovieClip()。 當涉及到這種事情時,AS2有點笨拙。我認爲大部分解決方案都是黑客行爲。我當然非常喜歡它是多麼簡單。 :)

+0

這並不令人傷心,因爲要確定鼠標是否離開,MC需要佔用整個舞臺......如果它佔據了在整個舞臺上,事件永遠不會發生,因爲當鼠標退出舞臺時,Flash仍然只知道它在舞臺上的最後位置。 – Aaron 2009-12-17 17:58:46

+0

這個問題的關鍵是在AS3的實現中暴露出來,因爲STAGE_LEAVE事件在Event類而不是MouseEvent類中。 – Aaron 2009-12-17 18:00:09

+0

不幸的是,即使處理事件的階段它也不起作用。至少,不適合我:P – Aaron 2009-12-17 18:23:55

1

您可以檢查_xmouse屬性看,如果鼠標不在剪輯

_root.onMouseMove = function() 
{ 
    if(
     _xmouse <= 0 || 
     _ymouse <= 0 || 
     _xmouse >= Stage.width - 1 || 
     _ymouse >= Stage.height - 1 
    ) 
    outCallBack(); 
} 

function outCallback() 
{ 
    bla; 
} 
+0

這要求用戶單擊窗口外部,否則,當鼠標離開舞臺時,它不會將鼠標位置更新到播放器的邊界之外,儘管這可能是與此問題最接近的。 – Aaron 2009-12-23 15:24:26