Flashhilfe.de - Flash Community

Prototype: Key.onShiftDown / onShiftUp [Flash 8]

Forum > Tipps & Tricks zu Flash, Flex und Adobe AIR > Prototype: Key.onShiftDown / onShiftUp

 


AntwortenRegistrieren Seite1  

 20.07.2003, 01:30 
Benutzerbild von Madokan
Beiträge: 130
Wohnort: Berlin/Germany
Registriert: Mar 2002

Prototype: Key.onShiftDown / onShiftUp
Globaler Event Handler für die Shift-Taste

Prototype:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// onSHIFTDown/Up - Inspired by Sebastian
// Durch das _global Objekt wird das ganze Zeitleisten
// unabhängig und zu einem Konstanten Event Handler
// Hinweis: Lässt sich beliebig auf weitere Tasten ausbauen,
// wir wäre es mit der LEFT,RIGHT,UP,DOWN,CONTROL, etc.

_global.onSHIFTListener = {};
_global.onSHIFTListener.onKeyDown = function() {
    if(Key.getCode() == Key.SHIFT) {
        Key.broadcastMessage("onSHIFTDown");
    }
}
_global.onSHIFTListener.onKeyUp = function() {
    if(Key.getCode() == Key.SHIFT) {
        Key.broadcastMessage("onSHIFTUp");
    }
}
Key.addListener(_global.onSHIFTListener);
ASBroadcaster.initialize(_global.onSHIFTListener);
ASSetPropFlags(_global,["onSHIFTListener"],1,true);


Beispiel Aufruf:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// Verwenden (Global)
_global.onSHIFTDown = function() {
    textfeld = "Global Down";
}
_global.onSHIFTUp = function() {
    textfeld = "Global Up";
}
Key.addListener(_global);

// Verwenden (Instanzbasiert/Zeitleiste)
this.onSHIFTDown = function() {
    textfeld2 = "Instanzbasiert Down";
}
this.onSHIFTUp = function() {
    textfeld2 = "Instanzbasiert Up";
}
Key.addListener(this);

// Verwenden (Objektbasiert)
obj = new Object();
obj.onSHIFTDown = function() {
    textfeld3 = "Objekt Down";
}
obj.onSHIFTUp = function() {
    textfeld3 = "Objekt Up";
}
Key.addListener(obj);

[Flashstar]
http://www.flashstar.de
Schlagwörter: key, prototype
 21.07.2003, 09:56Re1
Benutzerbild von SebastianFlashhilfe.de Moderator
Beiträge: 6940
Wohnort: München
Registriert: Jan 2002

Das _global kann man sich sparen, da das Key Object bereits Global verfügbar ist.

Aber schön das ich dich auch mal inspirieren konnte : )

Grüsse,
Sebastian Wichmann

Flashhilfe.de Webmaster
http://www.flashhilfe.de
Flex Freelancer || Flashhilfe @ Twitter || XING Profil
 22.07.2003, 18:21Re2
Benutzerbild von Madokan
Beiträge: 130
Wohnort: Berlin/Germany
Registriert: Mar 2002

Themenautor/in

Das Key ja aber die Event Handler sind es nicht und durch _global werden Sie es. :)

I am inspired!

Liebe Grüsse
Matze K.

[Flashstar]
http://www.flashstar.de
[Flashstar]
http://www.flashstar.de
 
nicht sichtbar bei eingeloggten Mitgliedern1&1 Webhosting
 22.07.2003, 18:32Re3
Benutzerbild von SebastianFlashhilfe.de Moderator
Beiträge: 6940
Wohnort: München
Registriert: Jan 2002

Hmm. So wie ich das sehe "mißbrauchst" ;)) du das _global Object für den Key Listener. Dadurch sparst du dir nur die Zuweisung eines eigenen Objects. http://www.flashhilfe.de/go/prototype/lesen&kat=9&seite=0&id=30 ist ja auch Zeitleisten unabhängig.

Durch die Benutzung von _global hat man nun auch keine Möglichkeit mehr, mehrere Listener in sein Movie zu implementieren.

Oder hab ich da was falsch verstanden?

Grüsse,
Sebastian Wichmann

Flashhilfe.de Webmaster
http://www.flashhilfe.de
Flex Freelancer || Flashhilfe @ Twitter || XING Profil
 23.07.2003, 01:16Re4
Benutzerbild von Madokan
Beiträge: 130
Wohnort: Berlin/Germany
Registriert: Mar 2002

Themenautor/in

Sebastian - schau genau hin nicht der Key Listener wird auf _global verwiesen! Sondern die neu definierten Event Handler.

Key ist ja bereits _global wäre also unsinnig. :)

Was weitere Listener bet. ist dies in diesem Fall auch nicht notwendig.

Liebe Grüsse
Matze K.

[Flashstar]
http://www.flashstar.de
[Flashstar]
http://www.flashstar.de
 23.07.2003, 19:34Re5
Benutzerbild von SebastianFlashhilfe.de Moderator
Beiträge: 6940
Wohnort: München
Registriert: Jan 2002

>>  schau genau hin nicht der Key Listener wird auf _global verwiesen! Sondern die neu definierten Event Handler
Ja ist mir klar. Das hatte ich vorher auch geschrieben (Re1).

>> Was weitere Listener bet. ist dies in diesem Fall auch nicht notwendig.
Hm, aber mal ehrlich. Die Möglichkeit zu haben, ist doch besser als auf einen onSHIFTDown angewiesen zu sein. Sorry, aber ich finde das es das Script nicht besser, sondern eher schlechter macht.

Grüsse,
Sebastian Wichmann

Flashhilfe.de Webmaster
http://www.flashhilfe.de
Flex Freelancer || Flashhilfe @ Twitter || XING Profil
 
nicht sichtbar bei eingeloggten Mitgliedern
 23.07.2003, 19:57Re6
Benutzerbild von Madokan
Beiträge: 130
Wohnort: Berlin/Germany
Registriert: Mar 2002

Themenautor/in

>> Hm, aber mal ehrlich. Die Möglichkeit zu haben, ist doch besser als auf einen onSHIFTDown angewiesen zu sein. Sorry, aber ich finde das es das Script nicht besser, sondern eher schlechter macht.

Schlechter wird es dadurch noch lange nicht!

Es ging ja auch nicht darum es besser oder schlechter zu machen, sondern aus einem anderen Blickwinkel zu betrachten, oder sollte ich doch lieber Scope sagen. :)

Du kannst auch mit dieser Anpassung so viele Listener hinzufügen wie du willst - einfach mal folgende Zeilen testen:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// Verwenden (Global)
_global.onSHIFTDown = function() {
    textfeld = "Global Down";
}
_global.onSHIFTUp = function() {
    textfeld = "Global Up";
}
Key.addListener(_global);

// Verwenden (Instanzbasiert/Zeitleiste)
this.onSHIFTDown = function() {
    textfeld2 = "Instanzbasiert Down";
}
this.onSHIFTUp = function() {
    textfeld2 = "Instanzbasiert Up";
}
Key.addListener(this);

// Verwenden (Objektbasiert)
obj = new Object();
obj.onSHIFTDown = function() {
    textfeld3 = "Objekt Down";
}
obj.onSHIFTUp = function() {
    textfeld3 = "Objekt Up";
}
Key.addListener(obj);


Also immer erst Testen bevor man behauptet es funtzt nicht. Man lernt nie aus... :)

Es lebe die Vielfalt - Entdecke die Möglichkeiten!

Liebe Grüsse
Matze K.

[Flashstar]
http://www.flashstar.de
[Flashstar]
http://www.flashstar.de
 23.07.2003, 20:06Re7
Benutzerbild von SebastianFlashhilfe.de Moderator
Beiträge: 6940
Wohnort: München
Registriert: Jan 2002

Ok, hast mich überzeugt. : )

Der "Fehler" tratt wegen deinem Beispiel auf:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// In _root:
_global.onSHIFTDown = function() {
    textfeld = "Global Down";
}
_global.onSHIFTUp = function() {
    textfeld = "Global Up";
}
Key.addListener(_global);


// Und in einem MC:
_global.onSHIFTDown = function() {
    textfeld2 = "Global Down";
}
_global.onSHIFTUp = function() {
    textfeld2 = "Global Up";
}
Key.addListener(_global);

Dann geht natürlich nur eins.

Vielleicht ist es besser wenn du mehrere Beispiele postest, oder das _global - Beispiel ganz weg läßt.

Sorry, dachte ich hatte es ausreichend getestet.

Grüsse,
Sebastian Wichmann

Flashhilfe.de Webmaster
http://www.flashhilfe.de
Flex Freelancer || Flashhilfe @ Twitter || XING Profil
 23.07.2003, 20:14Re8
Benutzerbild von Madokan
Beiträge: 130
Wohnort: Berlin/Germany
Registriert: Mar 2002

Themenautor/in

Hab die Codebeispiele angepasst. Aber wie du siehst sollte man vorsichtig sein. Das Scope wirft immer wieder Fragen auf und durch das eine oder andere Experiment lassen sich diese auch klären. Die Online-Hilfe tut dies jedenfalls nicht!

Das _global Beispiel lass ich daher nicht weg, da es uns die Möglichkeit bietet ein eindeutiges Event zu erzwingen. Stell dir mal vor du benötigst ein striktes Event, dass sich ähnlich, wie eine Konstante durch sämtliche Flash Ebenen und Zeitleisten eingesetzt werden soll. Dann ist das _global Beispie goldwert. :)

In einem MC wird wie folgt der Listener gesetzt:

ActionScript:
1
2
3
4
5
6
7
8
// Und in einem MC:
this.onSHIFTDown = function() {
    textfeld2 = "Global Down";
}
this.onSHIFTUp = function() {
    textfeld2 = "Global Up";
}
Key.addListener(this);


this verricht hier hervorragende Arbeit. :)

Liebe Grüsse
Matze K.

[Flashstar]
http://www.flashstar.de
[Flashstar]
http://www.flashstar.de
 23.07.2003, 20:15Re9
Benutzerbild von Madokan
Beiträge: 130
Wohnort: Berlin/Germany
Registriert: Mar 2002

Themenautor/in

Global Up/Down - muss durch MC Up/Down in der Zeichenkette ersetzt werden!

Liebe Grüsse
Matze K.

[Flashstar]
http://www.flashstar.de
[Flashstar]
http://www.flashstar.de
 23.07.2003, 20:25Re10
Benutzerbild von SebastianFlashhilfe.de Moderator
Beiträge: 6940
Wohnort: München
Registriert: Jan 2002

Wunderbar, danke! Nun versteh so gar ich es ; )

Grüsse,
Sebastian Wichmann

Flashhilfe.de Webmaster
http://www.flashhilfe.de
Flex Freelancer || Flashhilfe @ Twitter || XING Profil
 
Themen
Ähnliche Beiträge zum Thema
 

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.
Partner Webseiten: DesignerInAction.de   Designnation.de   Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   PSD-Tutorials.de   Tutorials.de

Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2012 Sebastian Wichmann - Flashhilfe.de