ios - AS3 在按住按钮的同时连续运行代码 - Air For iOS/Android

标签 ios actionscript-3 flash air touch

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

我期望/想要的是当我将手指按住按钮时,播放器会一直移动直到我停止触摸屏幕。

但会发生什么,我必须不断点击以保持玩家移动 - 而不是将手指按住按钮并让玩家继续移动。

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

最佳答案

要实现这一点,您需要在 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 事件,因为它为多点触控控制提供了更大的灵 active 。不过,如果您只允许在任何给定时间按下一个项目,这不是问题。

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

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

关于ios - AS3 在按住按钮的同时连续运行代码 - Air For iOS/Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12394877/

相关文章:

actionscript-3 - AS3类的命名规则是什么?

apache-flex - 获取 flex 中的类型

apache-flex - flex部署在tomcat上,在浏览器中打开时,是蓝色空白

java - 通过主机名连接到 Java 套接字

ios - 单击按钮时在Swift中不重复单词-iOS

ios - AVSpeechSynthesizer 高质量语音

ios - Xcode 4.3 在 Mac OS X 10.7.3 中安装错误?

ios - 如何在Swift 3中从函数返回结果之前等待URLSession完成

flash - glGenTextures GLuint 还是数组?

java - 针对经验丰富的 Flash 开发人员的实际 Java 初学者教程