我有一個定製的拖動事件,對大多數事情的偉大工程:如何檢測Event.MOUSE_LEAVE時的wmode =不透明或的wmode =透明
stage.addEventListener(MouseEvent.MOUSE_DOWN, beginDrag);
function beginDrag(e:MouseEvent)
{
stage.addEventListener(MouseEvent.MOUSE_MOVE, drag);
stage.addEventListener(MouseEvent.MOUSE_UP, endDrag);
stage.addEventListener(MouseEvent.DEACTIVATE, endDrag);
stage.addEventListener(Event.MOUSE_LEAVE, endDrag);
stage.addEventListener(Event.REMOVED_FROM_STAGE, stageEndDrag);
//trigger beginDrag event
}
function drag(e:MouseEvent)
{
//trigger drag event
}
function endDrag(e:Event)
{
stage.removeEventListener(MouseEvent.MOUSE_MOVE, drag);
stage.removeEventListener(MouseEvent.MOUSE_UP, endDrag);
stage.removeEventListener(MouseEvent.DEACTIVATE, endDrag);
stage.removeEventListener(Event.MOUSE_LEAVE, endDrag);
stage.removeEventListener(Event.REMOVED_FROM_STAGE, stageEndDrag);
//trigger endDrag event
}
的問題是,當我使用這個代碼wmode=transparent
或wmode=opaque
MOUSE_UP
事件發生在舞臺外時,未檢測到MOUSE_LEAVE
事件。
當wmode
是transparent
或opaque
時,有沒有辦法檢測到MOUSE_LEAVE
事件?
OR
有沒有辦法來檢測,這樣一個變通辦法可以實現該wmode
設置爲transparent
或opaque
?
@weltraumpirat在此之前,我從來沒有發現MOUSE_LEAVE事件是不可靠的。當MOUSE_LEAVE事件被觸發時,許多人都會感到困惑,因爲當MOUSE_UP事件發生時,鼠標離開舞臺而用戶正在拖動鼠標時發生。我發現,當鼠標離開'wmode = transparent/opaque'中的舞臺時,不處理鼠標事件,所以這種方法不太可能奏效(儘管我仍會試試)。 – zzzzBov 2011-03-26 18:13:47
如果您遇到任何問題,您可以隨時使用ENTER_FRAME監聽器。如果可以的話,我更喜歡使用MOUSE_MOVE,因爲它不是經常被解僱。 – weltraumpirat 2011-03-26 21:36:38
@weltraumpirat,當鼠標離開舞臺時(即使是MOUSE_OUT事件),都不會觸發鼠標事件。如果釋放或按下鼠標,則新鼠標事件也不會爲'buttonDown'註冊正確的值。我看不到'ENTER_FRAME'監聽器如何提供幫助。 – zzzzBov 2011-03-30 19:08:47