2012-09-12 8 views
5

Ich entwickle ein iOS-Spiel in Flash CS6. Ich habe einen grundlegenden Bewegungstest, den ich in einen Event.MOUSE_DOWN Handler einsetzte.AS3 Code kontinuierlich ausführen, während eine Taste gedrückt gehalten wird - Luft Für iOS/Android

Was erwarte ich/wollen, wenn ich mit dem Finger nach unten auf den Button gehalten, dass der Spieler bewegen würde halten, bis ich zu berühren stoppen den Bildschirm.

Was allerdings passiert, ist, ich habe ständig zu halten Antippen der Spieler in Bewegung zu halten - und nicht nur meine Finger auf die Taste gedrückt und der Spieler in Bewegung bleibt.

Welcher Code sollte ich verwenden, um zu erreichen, was ich will?

Antwort

6

Um dies zu erreichen, müssen Sie eine Funktion kontinuierlich zwischen MouseEvent.MOUSE_DOWN und Event.MOUSE_UP ausführen, da MouseEvent.MOUSE_DOWN nur einmal pro Druckvorgang ausgeführt wird.

Hier ist ein einfaches Skript genau das zu tun:

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 
} 

Als Nebenwirkung Sie können die Touch-Ereignisse verwenden, da es mehr Flexibilität mit Multi-Touch-Steuerung gibt. Wenn Sie jedoch immer nur einen Gegenstand zu einem bestimmten Zeitpunkt drücken lassen, ist das kein Problem.

, das zu tun, nur Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT in der Dokumentenklasse hinzufügen, dann Mouseevent Zuhörer mit dem entsprechenden Berührungsereignis ersetzen:

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

+0

Ist dies Ihre Antwort ist ich hat meinen nicht gepostet. Aber Sie haben gerade Ihre Antwort bearbeitet. – Moorthy

+0

Danke .. ein Lebensretter –

Verwandte Themen