我想单击一下,如果我的鼠标仍然向下,它就不会重复该功能,如果这有任何意义的话。
目前我有它:
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 的行为更像是"点击"。