如何在AS3中执行“if Single Click”而不是“if MouseDown”?

时间:2014-02-23 23:02:22

标签: actionscript-3

我想点击一下,如果我的鼠标仍然按下,如果有任何意义,请不要重复此功能。

目前我拥有它:

if (mouseDown)
{
     avatar.moveABit( 0, -2);
     sfxSoundChannel = moveSound.play();
}

如果我将鼠标放下,它会不断重复。我希望它只需单击即可完成,并且必须继续点击才能执行此操作而不是将鼠标放下。

3 个答案:

答案 0 :(得分:0)

你可能想要

MouseEvent.MOUSE_CLICK

我会在被点击的对象上添加一个事件监听器来监听点击,并在点击运行时包含你的移动和声音播放代码的处理函数。

请参阅this documentation

答案 1 :(得分:0)

您需要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事件。

答案 2 :(得分:0)

我不知道我是否理解正确,也许我们需要更多的代码才能理解你真正想要的东西。 我假设您正在使用某种循环(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将更像“Tap”。