我正在使用 Flash CS6 开发一款 iOS 游戏。
我有一个基本的移动测试,我将其放入 Event.MOUSE_DOWN
处理程序中。
我期望/想要的是当我将手指按住按钮时,播放器会一直移动直到我停止触摸屏幕。
但会发生什么,我必须不断点击以保持玩家移动 - 而不是将手指按住按钮并让玩家继续移动。
我应该使用什么代码来完成我想要的?
最佳答案
要实现这一点,您需要在 MouseEvent.MOUSE_DOWN
和 Event.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/