AS3 Halten mouseDown zur Erhöhung der Geschwindigkeit/power
dies ist, was ich versuche zu erreichen;
Durch einen Klick auf ein movieclip (cannon_mc)
ein Schuss ausgelöst wird (ball_mc)
Je länger Maustaste gedrückt ist, die Geschwindigkeit die der ball ausgelöst wird, mit erhöhen sollte.
Meine Frage an Sie ist;
Was ist der effizienteste Weg, dies zu erreichen?
Mit einem timer oder sowas in der Art;
var isMouseDown:Boolean = false;
var speed= 10;
myCannon.addEventListener(MouseEvent.MOUSE_DOWN,buttonPressed);
function buttonPressed(event:MouseEvent){
//trace("down");
isMouseDown == true;
if(isMouseDown == false)
{
speed == +1
}
}
- hat einer von den Antworten, die Ihr problem lösen ? Wenn so beachten Sie bitte die Kennzeichnung der hilfreichsten Antwort als akzeptierte Antwort. Auch zögern Sie nicht, Fragen Sie für weitere Hilfe, wenn nötig.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den MOUSE_DOWN-Ereignis wird nur gefeuert, einmal. Um den Effekt zu bekommen, die Sie wollen, müssen Sie die combo von MOUSE_DOWN und MOUSE_UP Event-Handler.
Können Sie eine variable auf true, in der MOUSE_DOWN-Ereignis alongwith den aktuellen timestamp aus
flash.utils.getTimer()
Dann auf MOUSE_UP, wenn die variable, die Sie in MOUSE_DOWN ist wahr, Sie berechnen die verstrichene Zeit und die Kraft entsprechend.
Beispiel:
Können Sie auch hinzufügen, ein ENTER_FRAME-Ereignis und animieren eine Leistungsanzeige oder etwas für den visuellen Effekt
Update
Wie gezeigt, durch The_asMan,
MOUSE_UP
- Ereignis wird nicht ausgelöst, wenn die Maus gezogen wird, und veröffentlicht die Außerhalb der Bühne. In diesem Fall behandeln hinzufügen und Ereignis-listener fürMOUSE_LEAVE
Veranstaltung mit der callback als Kopie buttonReleased-Funktion, aber die braucht ein Event-Objekt:MOUSE_UP
- Ereignis wird nicht ausgelöst, wenn die Maus gezogen wird, und veröffentlicht die Außerhalb der Bühne. In diesem Fall behandeln hinzufügen und Ereignis-listener fürMOUSE_LEAVE
Veranstaltung mit der callback als die gleiche Funktion buttonReleased(in sehr kurzen pseudocode)
Schreiben Sie einen Ereignis-Handler:
_mouseDown
legenpower
nullif (_mouseDown) power++;
_mouseDown
und feuert ball mit den kumuliertenpower
Framerate-unabhängige version:
_loadStart = getTimer(); _mouseDown = true; _power = 0;
if (_mouseDown) delta = getTimer() - _loadStart; _power += delta;
_power
,_mouseDown = false;