2012-09-12 55 views
5

Estoy desarrollando un juego de iOS en Flash CS6. Tengo una prueba de movimiento básica que puse en un controlador Event.MOUSE_DOWN.AS3 Ejecuta código continuamente mientras mantiene presionado un botón - Aire para iOS/Android

Lo que estoy esperando/querer es cuando mantuve mi dedo presionado sobre el botón, que el reproductor se mantendría en movimiento hasta que deje de tocar la pantalla.

Sin embargo, lo que sucede es que tengo que seguir tocando constantemente para mantener el reproductor en movimiento, en lugar de mantener el dedo sobre el botón y el reproductor sigue moviéndose.

¿Qué código debo usar para lograr lo que quiero?

Respuesta

6

Para lograr esto, deberá ejecutar una función continuamente entre MouseEvent.MOUSE_DOWN y Event.MOUSE_UP ya que MouseEvent.MOUSE_DOWN solo se enviará una vez por pulsación.

Aquí es un simple script para hacer precisamente eso:

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 
} 

Como acotación al margen, es posible que desee utilizar los eventos de toque, ya que da más flexibilidad con el control multi-touch. Sin embargo, si solo permite que se presione un elemento en un momento dado, no es un problema.

Para ello, sólo tiene que añadir Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT en su clase de documento, vuelva a colocar sus oyentes MouseEvent con el evento táctil apropiado:

MouseEvent.MOUSE_DOWN se convierte en: TouchEvent.TOUCH_BEGIN
MouseEvent.MOUSE_UP se convierte en: TouchEvent.TOUCH_END

+0

Si este fue su respuesta me no ha publicado el mío Pero ya has editado tu respuesta. – Moorthy

+0

Gracias .. un salvavidas –

Cuestiones relacionadas