Ungetestet:PHP-Code:function check_key(){
if(Key.isDown(23)){
clearInterval(a);
play();
}
}
a=setInterval(check_key,500);
stop();
Hi,
mit if(Key.isDown(23)) kann ich ja prüfen, ob die Leertaste gedrück ist. Nun habe ich aber Text in ein Textfeld geschrieben und will erst weitere Aktionen machen, wenn die Leertaste gedrückt wurde.
funktioniert natürlich nicht, da eine Endlosschleife entsteht. Wie kann ich das Problem lösen?Code:// Meine Anweisungen vorher // Warte auf Tastendruck while(!Key.isDown(23)) { } // Meine Anweisungen nachher
Ungetestet:PHP-Code:function check_key(){
if(Key.isDown(23)){
clearInterval(a);
play();
}
}
a=setInterval(check_key,500);
stop();
oder mit einem Listener
Übrigens ist der Ascii-Code 32 für die leertastePHP-Code:var myListener:Object = new Object();
myListener.onKeyDown = function() {
if (Key.isDown(32)) {
trace("leertaste wurde gedrückt");
}
};
Key.addListener(myListener);
![]()
Gruß
Wanderratte
Gebildet ist,
wer weiß,
wo er findet,
was er nicht weiß.
4bugs
Home
Amazon Wunschzettel
Hi,
hmm. Ich will ja, das die Abarbeitung des Codes in dem aktuellen Frame nicht fortgesetzt wird, bis die Leertaste gedrückt wurde. stop(); hält doch nur den Film auf den aktuellen Frame an. Gibt es keine Möglichkeit die Codeabarbeitung anzuhalten und dann wieder fortzusetzen?
Dann schreib den gewünschten Code in eine function und die rufst du dann mit Hilfe des Listeners auf.
und wo ist jetzt das Problem ?
Du schreibst eine Funktion, wo dein ganzer Code drin ist der nicht abgearbeitet werden soll bis die Leertaste gedrückt wurde und rufst dann diese Funktion auf.
Gruß
Wanderratte
Gebildet ist,
wer weiß,
wo er findet,
was er nicht weiß.
4bugs
Home
Amazon Wunschzettel
Hmm,
O.K., das geht. Wenn man diese Funktionalität aber häufiger brauchen würde, müsste ich die Funktion immer ändern bzw. eine neue erstellen, mit den Codeblöcken die abgearbeitet werden sollen.
Mir wäre es lieber gewesen, wenn ich die Ausführung des Script anhalten und fortsetzen könnte... Aber dann ist deine Lösung wohl die einzige Chance :-)
Noch eine Frage... Wieso muss ich, wenn ich ein Listener Objekt erzeuge immer auf die Klasse Object zurückgreifen? Wieso hat man nicht gleich eine eigene Klasse für Listener zur Verfügung gestellt. Object ist doch die allgemeinste, oder?
Vielen Dank.
Man kann auch eine function schreiben, die dann Vars übergeben bekommt und nur gewisse Teile abarbeitet. Großer Vorteil ist, das functions sehr dynamisch sind und bei oft verwendeten Arbeitsschritten eine Menge Code spart.Zitat von medieninf
Bsp:
PHP-Code:function test(foo:Number):Void {
if(foo == 1) trace("Die gedrückte Taste ist eine Zifferntaste mit geradem Wert.");
if(foo == 2) trace("Die gedrückte Taste ist eine Zifferntaste mit ungeradem Wert.");
if(foo == 3) trace("Die gedrückte Taste ist keine Zifferntaste.");
}
var myListener:Object = new Object();
myListener.onKeyDown = function() {
var raw:Number = Key.getCode();
if(raw >=48 && raw <= 57){
if(raw%2 == 0) test(1);
else test(2);
}
else test(3);
}
Key.addListener(myListener);
Klar, aber wenn Wurst im Kühlschrank leer ist, schlachtest du dann selber ein Schwein, oder kaufst du neue Wurst im Supermarkt?Zitat von medieninf
Object ist eine globale Function, die Flash schon von sich aus liefert und die sollte man dann auch verwenden.
Wozu also selber eine Klasse schreiben, wenn es schon eine gibt, die das erfüllt, was man haben will?
Ja, das man die Klasse nicht selber schreibt, wenn Sie da ist, leuchtet ein. Aber das halt in der allgemeinen Objekt Klasse die Listener Funktionalität "eingebaut" ist, finde ich nicht so logisch, wie wenn, für diese spezielle Aufgabe, von den Entwicklern die Listener Klasse auch Listener heißen würde und nicht alle möglichen Methoden in der Object Klasse liegen würden...
Trotzdem Danke. Nehm ich es halt als gegeben...
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)