 |
| 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 |
21.12.2005, 13:57
|
#1
|
|
TP-Junior
Registriert seit: Sep 2004
|
onKeyDown = function() geht nicht!!!
Liebes Forum,
ich habe folgendes Anfänger-Problem:
ich habe einen MC mit Instanznamen "x" auf der Bühne.
Im ersten Bild des Hauptfilms schreib ich jetzt folgendes:
x.onKeyDown = function()
{
trace("gedrückt");
}
Ich hatte jetzt gedacht, dass wenn ich den Film teste und ich eine Taste drücke, "gedrückt" im Augabefenster erscheinen müsste. Passiert aber nicht. Aber warum bloß nicht??  Hoffentlich könnt ihr helfen...
Greetings.
|
|
|
22.12.2005, 18:35
|
#2
|
|
TP-Supporter
Registriert seit: Jan 2003
Ort: NRW
|
Hallo,
weiss nicht ob das hilft:
Wenn ich dies
onClipEvent (keyDown) {
trace("holla!")
}
direkt auf den MC schreibe, macht er's.
Gruss
23012
|
|
|
22.12.2005, 18:39
|
#3
|
|
TP-Junior
Registriert seit: Sep 2004
|
danke für deine Antwort. Genau das ist ja, was mich so wundert. Mit onClipEvent (keyDown) geht's, aber mit onKeyDown geht's nicht. Dabei sollte das doch funktionieren...
Ich versteh's einfach nicht...
|
|
|
22.12.2005, 19:04
|
#4
|
|
TP-Moderator
Registriert seit: Mar 2002
|
Hallo
wenn du nur eine Tastenfunktion abfragen willst, brauchst du keinen MC 
Guck dir das mal an
PHP-Code:
meinListener = new Object();
meinListener.onKeyDown = function () {
trace ("Sie haben eine Taste gedrückt.");
}
meinListener.onKeyUp = function () {
trace ("Sie haben eine Taste losgelassen.");
}
Key.addListener(meinListener);
Mehr dazu findest du unter addListener in der Hilfe 
|
|
|
22.12.2005, 19:10
|
#5
|
|
TP-Junior
Registriert seit: Sep 2004
|
danke, mit Listenern geht's natürlich auch... Mein Problem ist einfach, das irgendwie mein Weltbild daran zerbricht, dass z.B.
mc.onEnterFrame = function() oder mc.onMouseDown= function() usw. funktionieren aber mc.onKeyDown= function() nicht. Obwohl die Doku sagt, dass das gehen müsste. W A R U M N U R?!! AHHHH!! ;-)
|
|
|
22.12.2005, 19:23
|
#6
|
|
TP-Moderator
Registriert seit: Mar 2002
|
Geht ja auch, du mußt nur den Fokus daraus setzen.
Dafür guckt man einmal kurz in die Hilfe
Zitat:
MovieClip.onKeyDown
Verfügbarkeit
Flash Player 6.
Verwendung
mein_mc.onKeyDown = function() {
// Anweisungen hier einfügen
}
Parameter
Keine.
Rückgaben
Keine.
Beschreibung
Ereignisprozedur; wird aufgerufen, wenn ein Movieclip den Eingabefokus besitzt und eine Taste gedrückt wird. Die Ereignisprozedur onKeyDown wird ohne Parameter aufgerufen. Mit Hilfe der Methoden Key.getAscii() und Key.getCode() lässt sich ermitteln, welche Taste gedrückt wurde. Sie müssen eine Funktion definieren, die beim Aufruf der Ereignisprozedur ausgeführt wird.
Die Ereignisprozedur onKeyDown funktioniert nur, wenn der Eingabefokus des Movieclips aktiviert ist. Zunächst muss für den Movieclip die Eigenschaft focusEnabled auf true gesetzt werden. Anschließend muss der Movieclip den Fokus erhalten. Sie können dazu entweder Selection.setFocus() verwenden oder die Tabulatortaste so belegen, dass damit zum Movieclip gewechselt werden kann.
Wenn Sie Selection.setFocus() verwenden, muss die Pfadangabe für den Movieclip an Selection.setFocus() übergeben werden. Nachdem die Maus bewegt wurde, können wieder andere Elemente den Fokus erhalten.
Beispiel
Das folgende Beispiel definiert eine Funktion für die Methode onKeyDown(), die eine trace()-Aktion an das Ausgabe-Bedienfeld sendet:
mein_mc.onKeyDown = function () {
trace ("onKeyDown aufgerufen");
};
Im folgenden Beispiel wird der Eingabefokus gesetzt:
MovieClip.focusEnabled = true;
Selection.setFocus(MovieClip);
|
Ich kann dir wirklich nur dazu sagen, mache die F1 Taste zu deiner Lieblingstaste, sie ist auch meine 
Noch ein Tipp wenn du im AS-Editor das Wort markierst und dann F1 drückst, kommst du in der Hilfe direkt zu den Befehl 
|
|
|
22.12.2005, 22:57
|
#7
|
|
TP-Junior
Registriert seit: Sep 2004
|
Ja danke für den Hinweis. Die Hilfe hatte ich natürlich schon gelesen (ich mag F1 auch...  ). Der Haken ist, das genau das NICHT funktioniert.
Mein MovieClip heißt mc und ist im Hauptfilm eingebettet. Im ersten Bild der HZL schreibe ich:
mc.focusEnabled = true;
Selection.setFocus(mc);
mc.onKeyDown = function()
{
trace("Hallo");
}
Dann teste ich den Film, drücke eine Taste und nichts passiert...
Was mach ich da bloß falsch??!!
|
|
|
23.12.2005, 14:37
|
#8
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
Sofort nach dem Veröffentlichen wird es gehen, aber mit der ersten Mousebewegung verlierst du den Fokus.
Lösung (hab es mal ein wenig kommentiert.):
PHP-Code:
mc.onEnterFrame = function(){
//Eingabefokus aktivieren
mc.focusEnabled = true;
//Fokusumrandung ausschalten
mc._focusrect = false;
//Fokus setzen
Selection.setFocus(mc);
}
mc.onKeyDown = function(){
trace("Hallo");
}
|
|
|
23.12.2005, 14:45
|
#9
|
|
TP-Junior
Registriert seit: Sep 2004
|
Ahhh.... Ohhh.... Vielen Dank, das funktioniert.
Ich wusste nicht, dass der Tastaturfokus von der Maus abhängt.
Coole Sache, jetzt kann ich wieder ruhig schlafen.
Danke, danke, danke!!! 
|
|
|
|
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 14:21 Uhr.
|
 |