我想做一個單一的點擊,並讓它不重複的功能,如果我的鼠標仍然關閉,如果這是有道理的。如何在AS3中「如果單擊」而不是「如果MouseDown」?
目前,我有它:
if (mouseDown)
{
avatar.moveABit(0, -2);
sfxSoundChannel = moveSound.play();
}
,如果我把我的鼠標按下它不斷重複這一點。我希望它只能用一次點擊來工作,並且必須繼續點擊才能完成,而不是將鼠標放下。
我想做一個單一的點擊,並讓它不重複的功能,如果我的鼠標仍然關閉,如果這是有道理的。如何在AS3中「如果單擊」而不是「如果MouseDown」?
目前,我有它:
if (mouseDown)
{
avatar.moveABit(0, -2);
sfxSoundChannel = moveSound.play();
}
,如果我把我的鼠標按下它不斷重複這一點。我希望它只能用一次點擊來工作,並且必須繼續點擊才能完成,而不是將鼠標放下。
你可能想
MouseEvent.MOUSE_CLICK
我正在單擊監聽點擊的對象添加事件偵聽器,並點擊運行處理函數,其中將包括您的移動和soundplay代碼。
您需要MouseEvent.CLICK
像這樣:
//Create a function (which moves avatar) to be called on mouse click
function moveAvatar(e:MouseEvent):void
{
avatar.moveABit(0, -2);
sfxSoundChannel = moveSound.play();
}
stage.addEventListener(MouseEvent.CLICK, moveAvatar); //add mouse click event listener
編輯:moveABit
不應該使用ENTER_FRAME
事件。
我不知道我是否正確理解它,也許我們需要更多的代碼來理解你真正想要的。 我假設你正在使用某種循環(setInterval,Event.ENTER_FRAME)來檢查鼠標按鈕是否關閉。如果你是,我想你應該改變只火一個函數裏是這樣的:
function OnMouseDownHandler(event:MouseEvent):void
{
avatar.moveABit(0, -2);
sfxSoundChannel = moveSound.play();
}
stage.addEventListener(MouseEvent.MOUSE_DOWN, OnMouseDownHandler, false, 0, true);
如果使用MouseEvent.CLICK事件OnMouseDownHandler方法將只有當你鬆開鼠標按鈕使用的MouseEvent解僱。 MOUSE_DOWN的行爲更像一個「點擊」。