 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
14.11.2006, 15:47
|
#1
|
|
TP-Member
Registriert seit: Mar 2006
|
Warten auf Tastendruck mit Key.isDown
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.
Code:
// Meine Anweisungen vorher
// Warte auf Tastendruck
while(!Key.isDown(23)) { }
// Meine Anweisungen nachher
funktioniert natürlich nicht, da eine Endlosschleife entsteht. Wie kann ich das Problem lösen?
|
|
|
14.11.2006, 15:55
|
#2
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
Ungetestet:
PHP-Code:
function check_key(){ if(Key.isDown(23)){ clearInterval(a); play(); } } a=setInterval(check_key,500); stop();
|
|
|
14.11.2006, 15:59
|
#3
|
|
TP-Moderator
Registriert seit: Mar 2002
|
oder mit einem Listener
PHP-Code:
var myListener:Object = new Object();
myListener.onKeyDown = function() {
if (Key.isDown(32)) {
trace("leertaste wurde gedrückt");
}
};
Key.addListener(myListener);
Übrigens ist der Ascii-Code 32 für die leertaste 
|
|
|
14.11.2006, 16:41
|
#4
|
|
TP-Member
Registriert seit: Mar 2006
|
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?
|
|
|
14.11.2006, 16:55
|
#5
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
Dann schreib den gewünschten Code in eine function und die rufst du dann mit Hilfe des Listeners auf.
|
|
|
14.11.2006, 16:55
|
#6
|
|
TP-Moderator
Registriert seit: Mar 2002
|
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.
|
|
|
15.11.2006, 09:43
|
#7
|
|
TP-Member
Registriert seit: Mar 2006
|
...
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.
|
|
|
15.11.2006, 16:29
|
#8
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
Zitat:
|
Zitat von medieninf
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.
|
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.
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);
Zitat:
|
Zitat von medieninf
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?
|
Klar, aber wenn Wurst im Kühlschrank leer ist, schlachtest du dann selber ein Schwein, oder kaufst du neue Wurst im Supermarkt?
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?
|
|
|
20.11.2006, 13:51
|
#9
|
|
TP-Member
Registriert seit: Mar 2006
|
...
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)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 21:11 Uhr.
|
 |