Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash 8

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05-04-2007, 15:51   #1 (permalink)
Dr. Funk
 
Registriert seit: Sep 2001
Beiträge: 137
Question Nach "onKeyDown"-Event verändert Flash selbstständig den Focus..

Hallo zusammen,

hat jemand das folgende Problem schon einmal erlebt und eventuell sogar eine Lösung dafür gefunden:

Ich frage über einen EventListener das KeyDown-Event ab, und führe entsprechend der gedrückten Taste bestimmte Funktionen aus.
Unter anderem setze ich auch den Focus auf einen bestimmten MC.

Das funktioniert zunächst auch einwandfrei, per Trace gibt mir der Flashplayer die korrekten Ergebnisse aus.

Nun aber das Seltsame:
Sobald alle Funktionen abgearbeitet sind, verschiebt Flash selbstständig noch einmal den Focus auf einen anderen MC. Dies passiert genauer gesagt dann, wenn auf der Bühne oberhalb des eigentlich fokussierten MCs noch ein (oder mehrere) andere MCs mit Button-Funktionalität liegen.
Drücke ich nun die Pfeil-nach-oben-Taste, wird zunächst korrekterweise der richtige MC fokussiert, und sofort danach springt der Fokus selbstständig an eine ganz andere Stelle..

Kann ich dieses automatische "Versetzen" des Fokus irgendwie unterbinden?

Habe es schon mit mc.focusEnabled=false versucht, kein Glück.. (Der/die mcs haben eigene onRelease und onRollOver-Funktionen)
Nehme ich _focusrect=false (oder so ähnlich war die property meine ich), geht es auch nicht, bzw. funktioniert dann das Ansteuern dieses MCs über die Tastatur gar nicht mehr..

Ich weiss, dass die Alternative über das onKeyUp-Event funktioniert, da nach Abarbeiten dieses Events komnischerweise KEINE Veränderung des Focus durch Flash auftritt, aber dies ist in meiner Applikation leider nicht möglich, da der onKeyUp-Event bereits verwendet wird..


Joa, alles bisschen umständlich formuliert vielleicht, aber ich bastel an dem Mist jetzt schon den ganzen Tag lang rum und finde einfach keine Möglichkeit, Flash diese Unsitte auszutreiben.. ;-)=


Wäre toll, wenn jemand einen Hinweis für mich hat!

Danke & Grüssle,
quasi
__________________
HEITER WEITER
q|_|@S|^^°^°
quasimono ist offline   Mit Zitat antworten
Alt 05-04-2007, 16:19   #2 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Tag,
klingt etwas seltsam. Kann es sein, dass du evtl. im Film den Frame mit dem Key-Listener neu "betrittst"? Dann haste den nämlich 2mal und der wird dann eben auch doppelt ausgeführt.
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 05-04-2007, 16:27   #3 (permalink)
Dr. Funk
 
Registriert seit: Sep 2001
Beiträge: 137
Hallo,

stimmt: Klingt seltsam - ist seltsam!

Zu deiner Frage: Ja, ich betrete den Frame innerhalb des Films immer wieder mal neu, aber die Initialisierung des eventListeners wird nur einmalig in einer Init-Funktion ausgeführt, das habe ich schon bedacht.

Wie gesagt: Flash führt diesen Focus-Wechsel tatsächlich selbstständig aus, nachdem meine Anweisungen komplett und richtig abgearbeitet wurden!
Dies aber nur bei "onKeyDown", nicht bei "onKeyUp".
__________________
HEITER WEITER
q|_|@S|^^°^°
quasimono ist offline   Mit Zitat antworten
Alt 05-04-2007, 16:42   #4 (permalink)
Dr. Funk
 
Registriert seit: Sep 2001
Beiträge: 137
hier mal eine beispiel-FLA zum anschauen.. (F8)

starten -> "Pfeil nach oben" drücken -> trace anschauen..

seltsam..
Angehängte Dateien
Dateityp: zip ff_beispiel.zip (5,0 KB, 4x aufgerufen)
__________________
HEITER WEITER
q|_|@S|^^°^°
quasimono ist offline   Mit Zitat antworten
Alt 05-04-2007, 16:49   #5 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
PHP-Code:
if(Key.getCode() == Key.UP) { 
Dir ist klar, daß dieser Fall nie eintritt, oder?

Key.getCode() gibt bei Drücken des PfeilNachOben,
den Code dieser Taste zurück, welcher »38« ist und
nicht »Key.UP«.

gruß, gaspode
gaspode ist offline   Mit Zitat antworten
Alt 05-04-2007, 16:52   #6 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
@gaspode: Doch, geht auch mit Key.UP.

@quaismono: Hängt anscheinend mit dem tab-Index zusammen!?
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 05-04-2007, 16:53   #7 (permalink)
Dr. Funk
 
Registriert seit: Sep 2001
Beiträge: 137
Zitat:
Zitat von gaspode Beitrag anzeigen
PHP-Code:
if(Key.getCode() == Key.UP) { 
Dir ist klar, daß dieser Fall nie eintritt, oder?

Key.getCode() gibt bei Drücken des PfeilNachOben,
den Code dieser Taste zurück, welcher »38« ist und
nicht »Key.UP«.

gruß, gaspode
Sorry, aber da irrst Du dich!

Guckstu:
Code:
if(Key.getCode() == Key.UP) {
		trace("true! " + Key.UP);
		return true 
	} else {
		return false;
	}
Key.UP ist nur eine interne Referenz auf die 38, wenn du so willst..
__________________
HEITER WEITER
q|_|@S|^^°^°
quasimono ist offline   Mit Zitat antworten
Alt 05-04-2007, 16:58   #8 (permalink)
Dr. Funk
 
Registriert seit: Sep 2001
Beiträge: 137
Zitat:
Zitat von Der Frager Beitrag anzeigen
@gaspode: Doch, geht auch mit Key.UP.

@quaismono: Hängt anscheinend mit dem tab-Index zusammen!?
Tja du, das habe ich auch schon vermutet, aber auch wenn ich die Zeile auskommentiere passiert leider dasselbe.. (Ausserdem benötige ich den tab-index auf diesen "oberen" buttons in der eigentlichen anwendung..)

Danke dass du mal darüber nachdenkst!
__________________
HEITER WEITER
q|_|@S|^^°^°
quasimono ist offline   Mit Zitat antworten
Alt 05-04-2007, 17:04   #9 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
Zitat:
Zitat von Der Frager Beitrag anzeigen
@gaspode: Doch, geht auch mit Key.UP.
Man lernt nie aus.

gruß, gaspode
gaspode ist offline   Mit Zitat antworten
Alt 05-04-2007, 17:06   #10 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Vielleicht onKeyUp nehmen?
PHP-Code:
var oKeyListener:Object = new Object();
oKeyListener.onKeyUp = function() {
    if (
Key.getCode() == Key.DOWN || Key.getCode() == Key.UP) {
        
doKeyboardNavigation();
    }
};
function 
doKeyboardNavigation() {
    if (
Key.getCode() == Key.UP) {
        
Selection.setFocus(mc_2);
    }
}
Key.addListener(oKeyListener); 
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 09-04-2007, 19:25   #11 (permalink)
Dr. Funk
 
Registriert seit: Sep 2001
Beiträge: 137
jau, keyUp benutze ich bereits für die "haupt-keyboard-navigation".
meine idee war, keyDown auch zusätzlich zu benutzen, damit der user z.b. durch gedrückt halten der pfeil-hoch und pfeil-runter tasten einen scrollbaren MC hoch- oder runterscrollen kann. wenn ich nur keyUp benutze, müsste der user x-mal pfeil-hoch oder pfeil-runter drücken, und zwar solange, bis der scrollbar dann am ende angekommen ist.. je nachdem, wieviel inhalt der user so scrollen muss, hat er/sie bis dahin eine arthritis an der "klickhand"...
__________________
HEITER WEITER
q|_|@S|^^°^°

Geändert von quasimono (09-04-2007 um 19:26 Uhr)
quasimono ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 19:19 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele