Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05-08-2005, 20:37   #1 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
with und Event-Handler?

funktioniert:
ActionScript:
  1. mc.onPress = function(){
  2.  trace("Press!")
  3. }

funktioniert nicht:
ActionScript:
  1. with(mc){
  2.  onPress = function(){
  3.   trace("Press!");
  4.  }
  5. }

warum nicht?
__________________
Some Flash Worx
Alphanimal ist offline   Mit Zitat antworten
Alt 05-08-2005, 21:03   #2 (permalink)
[Matthias K.] - Moderator
 
Benutzerbild von Madokan
 
Registriert seit: Jun 2001
Ort: Berlin/Germany - and the hole World !
Beiträge: 9.971
@aplhanimal: Daniel with() ist ein kleines gemeines Miststück - wenn man das so sagen darf. Folgende Regeln sind zu beachten:

Auszug aus der Online-Hilfe:
Zitat:
Die in der with-Aktion zum Auflösen von Bezeichnern verwendete Gültigkeitsbereichskette beginnt mit dem ersten und endet mit dem letzten der in der folgenden Liste aufgeführten Elemente:

- das im Parameter object in der innersten with-Aktion angegebene Objekt
- das im Parameter object in der äußersten with-Aktion angegebene Objekt
- das Aktivierungsobjekt. (Ein temporäres Objekt, das automatisch beim Aufruf einer Funktion erstellt wird und die in der Funktion aufgerufenen lokalen Variablen enthält.)
- der Movieclip, der das zurzeit ausgeführte Skript enthält
- das globale Objekt (vordefinierte Objekte, wie z. B. Math oder String)
Der vierte Punkt führt zu dem Phänomen, dass dein onPress-Event der Hauptzeitleiste zugewiesen wird und nicht dem mc!

Du kannst ja mal folgendes durchführen in deinem mc legst du eine weitere mc-instanz an, dieser Instanz weist du den Instanznamen mcinnen zu und legst die folgenden Codezeilen in das erste Schlüsselbild deiner mc-instanz.

ActionScript:
  1. with(mcinnen){   
  2.         onPress = function(){
  3.                 trace("Press!");
  4.         }
  5. }

Während der Testphase wirfst du einen Blick auf die Ausgabe (Variablen auflisten) - schau mal wer onPress zugewiesen bekommen hat. Die mc-Instanz. Sprich: "der Movieclip, der das zurzeit ausgeführte Skript enthält".

Hinweis: Auch die Hauptzeitleiste eines Flash Films ist nichts anders als MovieClip (eine movieclip-instanz).

Liebe Grüsse
Matze K.
Madokan ist offline   Mit Zitat antworten
Alt 05-08-2005, 21:06   #3 (permalink)
[Matthias K.] - Moderator
 
Benutzerbild von Madokan
 
Registriert seit: Jun 2001
Ort: Berlin/Germany - and the hole World !
Beiträge: 9.971
Hier mal der Auszug aus der Ausgabe:
ActionScript:
  1. Stufe #0:
  2. Variable _level0.$version = "WIN 7,0,19,0"
  3. Variable _level0.onPress = [Funktion]
  4. Movieclip: Ziel="_level0.mc"
  5. Movieclip: Ziel="_level0.mc.mcinnen"

Diese _level0.onPress.


Nun noch with innerhalb der mc-Instanz und Verweis auf mcinnen.
ActionScript:
  1. Stufe #0:
  2. Variable _level0.$version = "WIN 7,0,19,0"
  3. Variable _level0.onPress = [Funktion]
  4. Movieclip: Ziel="_level0.mc"
  5. Variable _level0.mc.onPress = [Funktion]
  6. Movieclip: Ziel="_level0.mc.mcinnen"

Wie du siehst erhält "der Movieclip, der das zurzeit ausgeführte Skript enthält" das zugewiesene Event.

Liebe Grüsse
Matze K.
Madokan ist offline   Mit Zitat antworten
Alt 05-08-2005, 21:14   #4 (permalink)
User
 
Benutzerbild von jeypack
 
Registriert seit: Sep 2003
Ort: Essen
Beiträge: 616
Und ich dachte, das geht nicht weil die function vorher deklariert werden muss. Wie ja auch Variablen vorher deklariert werden müssen.
Ist zwar Blödsinn, aber so gehts:
ActionScript:
  1. //
  2. square_mc.onPress = function() {
  3. };
  4. with (square_mc) {
  5.     onPress = function () {
  6.         trace("onPress");
  7.     };
  8. }
__________________
Gruß, Jey!
jeypack ist offline   Mit Zitat antworten
Alt 05-08-2005, 21:19   #5 (permalink)
[Matthias K.] - Moderator
 
Benutzerbild von Madokan
 
Registriert seit: Jun 2001
Ort: Berlin/Germany - and the hole World !
Beiträge: 9.971
@jeypack: Wie du schon sagst das ist blödsinn, der mehr aufwand würde sich nicht rechtfertigen. Aber die Deklaration spielt auch eine Rolle - den was vorher nicht im Arbeitsspeicher rumliegt kann auch nicht von with() erfast werden! Daher erhält ja auch _level0 das Event onPress, denn _level0 ist deklariert von anfang an!

Liebe Grüsse
Matze K.
Madokan ist offline   Mit Zitat antworten
Alt 05-08-2005, 21:28   #6 (permalink)
User
 
Benutzerbild von jeypack
 
Registriert seit: Sep 2003
Ort: Essen
Beiträge: 616
Zitat:
Zitat von Madokan
@jeypack: Wie du schon sagst das ist blödsinn, der mehr aufwand würde sich nicht rechtfertigen. Aber die Deklaration spielt auch eine Rolle - den was vorher nicht im Arbeitsspeicher rumliegt kann auch nicht von with() erfast werden! Daher erhält ja auch _level0 das Event onPress, denn _level0 ist deklariert von anfang an!

Liebe Grüsse
Matze K.
Klingt alles sehr logisch.

Will ja jetzt auch nicht rumnerven, aber sollte dann nicht der ganze Film ein Button sein???
Es kommt aber keine Hand...
__________________
Gruß, Jey!
jeypack ist offline   Mit Zitat antworten
Alt 06-08-2005, 00:27   #7 (permalink)
Achim Math.PI
 
Benutzerbild von bloba
 
Registriert seit: Jul 2001
Ort: cool Colonia
Beiträge: 11.642
wozu ?
um eine globale abfrage zu haben ?
dann kannst du doch onMouseDown verwenden...
__________________
gruß bloba

2 x onkel² b_d
bloba ist offline   Mit Zitat antworten
Alt 06-08-2005, 00:57   #8 (permalink)
User
 
Benutzerbild von jeypack
 
Registriert seit: Sep 2003
Ort: Essen
Beiträge: 616
@bloba: ne, nee...ich brauch das ja nicht, aber nur zum Verständnis.

Wenn sich also
ActionScript:
  1. with (square_mc) {
  2.         onPress = function () {
  3.                 trace("onPress");
  4.         };
  5. }
dann auf _level0 bezieht, so müsste doch eigentlich über dem ganzen Film der Handcursor erscheinen.

???
__________________
Gruß, Jey!
jeypack ist offline   Mit Zitat antworten
Alt 06-08-2005, 07:24   #9 (permalink)
[Matthias K.] - Moderator
 
Benutzerbild von Madokan
 
Registriert seit: Jun 2001
Ort: Berlin/Germany - and the hole World !
Beiträge: 9.971
@jeypack: Das tut Flash ja auch siehe Ausgabemeldungen, jedoch darfst du nicht vergessen, dass die dem Flash Film (_level0) die sensitive Fläche fehlt! Du klickst somit ins nichts und damit wird das Ereignis von Flash nicht registriert (gefeuert).

Andere Events haben damit kein Problem:
ActionScript:
  1. with(mc)
  2. {   
  3.     onLoad = function()
  4.     {
  5.         trace("Einmal gelaunched...");
  6.     }
  7.     onEnterFrame = function()
  8.     {
  9.         trace("Gelaunched...");
  10.     }   
  11. }

Und schon geht es rund im Ausgabefenster.

Liebe Grüsse
Matze K.
Madokan ist offline   Mit Zitat antworten
Alt 06-08-2005, 11:40   #10 (permalink)
User
 
Benutzerbild von jeypack
 
Registriert seit: Sep 2003
Ort: Essen
Beiträge: 616
@ Matze: Kapiert, und leuchtet ein. Danke für die Erklärung vom Meister.
__________________
Gruß, Jey!
jeypack ist offline   Mit Zitat antworten
Alt 06-08-2005, 17:00   #11 (permalink)
[Matthias K.] - Moderator
 
Benutzerbild von Madokan
 
Registriert seit: Jun 2001
Ort: Berlin/Germany - and the hole World !
Beiträge: 9.971
@jeypack: Immer wieder gerne - bin froh das ich ab un an noch Zeit finde mal auch ein bissel mit Flash herumzuspielen, seit dem sich mein Schwerpunkt verlagert hat vom Development zum Management ist es doch schwer geworden zu Flashen, aber ich bleib der Leidenschaft treu, so viel ist sicher und Flashen macht einfach unendlich viel Spass - gleich wieviel kummer man hat mit all den "kleinen" Problemchen.

Liebe Grüsse
Matze K.
Madokan 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 07:57 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele