2012-09-12 9 views
5

Sto sviluppando un gioco iOS in Flash CS6. Ho un test di movimento base che ho inserito in un gestore Event.MOUSE_DOWN.AS3 Esegui continuamente il codice tenendo premuto un pulsante - Air per iOS/Android

Quello che mi aspetto o che voglio è quando tengo il dito premuto sul pulsante, che il lettore continua a muoversi finché non smetto di toccare lo schermo.

Ciò che succede, però, è che devo continuare a toccare continuamente per mantenere il giocatore in movimento, piuttosto che tenere il dito premuto sul pulsante e il giocatore continua a muoversi.

Quale codice devo utilizzare per ottenere ciò che voglio?

risposta

6

Per fare ciò, è necessario eseguire una funzione ininterrotta tra MouseEvent.MOUSE_DOWN e Event.MOUSE_UP poiché MouseEvent.MOUSE_DOWN viene inviato solo una volta per stampa.

Ecco un semplice script per fare proprio questo:

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 
} 

Per inciso, si consiglia di utilizzare gli eventi TOUCH, in quanto offre una maggiore flessibilità con il controllo multi-touch. Tuttavia, se si consente solo a un elemento di essere premuto in un dato momento, non è un problema.

Per fare ciò, è sufficiente aggiungere Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT nella classe del documento, quindi sostituire i vostri ascoltatori MouseEvent con l'evento di tocco appropriato:

MouseEvent.MOUSE_DOWN diventa: TouchEvent.TOUCH_BEGIN
MouseEvent.MOUSE_UP diventa: TouchEvent.TOUCH_END

+0

Se questa è stata la sua risposta che non ha pubblicato il mio. Ma hai modificato la tua risposta proprio ora. – Moorthy

+0

Grazie ... un salvatore di vita –