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



我想单击一下,如果我的鼠标仍然向下,它就不会重复该功能,如果这有任何意义的话。

目前我有它:

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

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

你可能想要

MouseEvent.MOUSE_CLICK

我会在正在单击的对象上添加一个事件侦听器以侦听单击,并在单击时运行包含移动和声音播放代码的处理程序函数。

请参阅此文档。

你需要这样的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 的行为更像是"点击"。

最新更新