AS3按住按钮时连续运行代码 - 适用于iOS / Android的Air

时间:2012-09-12 19:21:20

标签: ios actionscript-3 flash air touch

我正在使用Flash CS6开发iOS游戏。 我有一个基本的运动测试,我放在Event.MOUSE_DOWN处理程序中。

我期待/想要的是当我用手指按下按钮时,播放器会继续移动直到我停止触摸屏幕。

但是,我必须不停地点击以保持玩家的移动 - 而不是仅仅按住按钮并且玩家继续移动。

我应该使用什么代码来完成我想要的任务?

1 个答案:

答案 0 :(得分:6)

要完成此操作,您需要在MouseEvent.MOUSE_DOWNEvent.MOUSE_UP之间连续运行一个函数,因为MouseEvent.MOUSE_DOWN每次按下只会调度一次。

这是一个简单的脚本:

myButton.addEventListener(MouseEvent.MOUSE_DOWN,mouseDown);

function mouseDown(e:Event):void {
    stage.addEventListener(MouseEvent.MOUSE_UP,mouseUp); //listen for mouse up on the stage, in case the finger/mouse moved off of the button accidentally when they release.
    addEventListener(Event.ENTER_FRAME,tick); //while the mouse is down, run the tick function once every frame as per the project frame rate
}

function mouseUp(e:Event):void {
    removeEventListener(Event.ENTER_FRAME,tick);  //stop running the tick function every frame now that the mouse is up
    stage.removeEventListener(MouseEvent.MOUSE_UP,mouseUp); //remove the listener for mouse up
}

function tick(e:Event):void {
    //do your movement
}

另外,您可能希望使用TOUCH事件,因为它为多点触控提供了更大的灵活性。虽然如果你只是允许在任何给定时间按下一个项目,这不是问题。

要做到这一点,只需在文档类中添加Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT,然后用适当的触摸事件替换MouseEvent侦听器:

MouseEvent.MOUSE_DOWN变为:TouchEvent.TOUCH_BEGIN
MouseEvent.MOUSE_UP变为:TouchEvent.TOUCH_END