2011-08-19 95 views
-1

我怎麼會不斷地檢查鼠標是否處於關閉狀態,如果鼠標下來,它的動作,我CAL功能ActionScript 3的鼠標按下

我試圖mk_mc.addEventListener(MouseEvent.MOUSE_DOWN,fct)但它只能調用函數的人,然後停止,我想不斷地做,我該怎麼做?

回答

7

什麼你問的已經問過,但我不能很容易地找到一個重複的問題,所以我會後的鏈接問題,我在那裏asking for help with a few niche issues

在AS3處理拖動事件的一些合理的代碼是:

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 
} 
1

我覺得你可以簡單地設置一些標誌,當鼠標停下來並在鼠標啓動時再次設置它。類似的東西:

private var down_:Boolean = false; 

mk_mc.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDown); 

function onMouseDown(event) { 
    down_ = true; 
    mk_mc.addEventListener(MouseEvent.MOUSE_UP,onMouseUp); 
} 

function onMouseUp(event) { 
    down_ = false; 
    mk_mc.removeEventListener(MouseEvent.MOUSE_UP,onMouseUp); 
} 

然後,只需查詢down_知道如果鼠標按下。

+0

這段代碼有很多細微的問題。它通常工作得相當好,但是在某些情況下,它會失敗,導致即使在鼠標被釋放後,拖動也會停滯不前。 – zzzzBov

4

所以,你想要做的是調用一個函數,當鼠標移動和按鈕是跌?

最簡單的方法是在鼠標移動時調用函數(或者,如果您想在鼠標移動時調用函數,則使用Timer),並讓它檢查鼠標上/下設置的標誌在採取任何行動之前。

var isDown:Boolean = false; 

stage.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDown); 
stage.addEventListener(MouseEvent.MOUSE_UP,onMouseUp); 
stage.addEventListener(MouseEvent.MOUSE_MOVE,onMouseMove); 

function onMouseDown(evt:MouseEvent):void 
{ 
    isDown = true; 
} 

function onMouseUp(evt:MouseEvent):void 
{ 
    isDown = false; 
} 

function onMouseMove(evt:MouseEvent):void 
{ 
    if(isDown) { 
     //party 
    } 
}