Raumschiff-Steuerung

ali-gator

Erfahrenes Mitglied
Hallo, ich bin dabei einen kleinen Space-Shooter zu entwickeln, bin auch schon ziemlich fertig, allerdings will ich noch einige kleine Animationen reinmachen... Dazu brauch ich allerdings eine gute Abfrage wann eine Taste gedrückt und wann losgelassen wird...
Bisher hab ich das so gemacht:

PHP:
onClipEvent (enterFrame) {
	if (_parent.steuerung_deaktiviert != true) {
		if ((Key.isDown(Key.UP))) {
			trace(this);
			_parent._up();
		}
		if ((Key.isDown(Key.DOWN))) {
			_parent._down();
		}
		if ((Key.isDown(Key.LEFT))) {
			_parent._left();
		}
		if ((Key.isDown(Key.RIGHT))) {
			_parent._right();
		}
	}
}
on (keyPress "<Space>") {
	if(_parent.schuss_deaktiviert != true) {
		_parent._space();
	}
}

allerdings kann ich damit schnell genug abfragen ob eine Taste auch losgelassen wird, bzw welche Taste das genau ist (wäre wichtig). Hatte schonmal eine lösung die aber nicht funktioniert hat wenn man unmittelbar von einer auf die andere Taste gewechselt ist...
Kann mir da jemand weiterhelfen!?
bis dann

ali-gator
 
Hi,

für die Bewegungssteuerung ist diese Methode schon gut geeignet, da der Status einzelner Tasten ununterbrochen abgefragt wird (ggf. statt onEnterFrame ein schnelles Intervall (setInterval) verwenden).

Um auf das Drücken und Loslassen einzelner Tasten zu reagieren, bietet sich ein Key-Listener an (dieser Code kommt aber nicht - wie bei Dir - auf eine MC-Instanz, sondern auf eine Zeitleiste):
Code:
var kl = new Object();
kl.onKeyDown = function() {
    trace("down: " + Key.getCode());
}
kl.onKeyUp = function() {
    trace("up: " + Key.getCode());
}
Key.addListener(kl);

Gruß
.
 
Also ich hab das ganze mal ausprobiert...Allerdings klappt das nicht wie ich es brauche, ich weiß auch nicht ob das überhaupt möglich ist. Beispiel: Ich will dass die Abgase aus dem Raumschiff stärker werden wenn es beschleunigt, allerdings klappt das ganze nicht wenn man erst die Beschleunigen-Taste drückt, dann Beschleunigen+Links und dann nur noch Links. Dann wird die Funktion die die Abgase auf normal zurücksetzt nicht aktiviert...
 
Zurück