Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 29-06-2005, 15:28   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Beiträge: 51
"onRelease" mit übergabe einer variable

Moin,

entweder ist es so einfach, dass ich einfach zu müde bin darauf zu kommen oder ich weiß auch nicht was ich falsch mache...

mein ziel ist es mehrere mc's nen rollover/release (etc.) event zuzuordnen, nun da die mc's, im grunde immer das selbe machen nur an einer stelle sich unterscheiden nömlich beim aufrufen verschiedener funktionen wollte ich eine for-schleife bauen und dann in der entsprechenden stelle n' "switch" reinsetzen, aber leider funktioniert das nicht ganz, ich weiß in der typischen version:
ActionScript:
  1. mc.onRollOver = function() {
  2. // Funktion
  3. }
nicht wie man ne variable mit reingibt, in etwa wie hier:

ActionScript:
  1. function meinesuperfunction(mitzugebenevariable) {
  2. // Funktion die problemlos auf die mitgelieferte variable zugreifen kann
  3. }
  4. meinesuperfunction("dies ist doch einfach!") // hier der aufruf ;o)
  5.  

sooo dann dache ich mir strickst du halt sowas:

ActionScript:
  1. function meinesuperfunction(variable) {
  2. // hier mal wieder ne schöne funktion die auf ne variable zugreifen möchte...
  3. }
  4. for (i=0;i<5;i++) {
  5. mc.onRollOver = meinesuperfunction(i)
  6. }
aber anstatt zu funktionieren, wird die funktion 5 mal aufgerufen...

hab ich irgendwas falsch gemacht/nicht beachtet/ vergessen / verpeilt? help plz!



PS: Für alle die mein bisherigen Code in der "komplexen" form sehen möchten hier der "wichtige" teil:
ActionScript:
  1. ...
  2. function buttonaction(u) {
  3.         trace(u)
  4.         if (!inaction) {
  5.             inaction = true;
  6.             _root.navbar["pfeil"+o]._alpha = 0;
  7.             o = 0;
  8.             if (active<>"but"+o) {
  9.                 removemask();
  10.                 switch (u) {
  11.                 case 0 :
  12.                     makemask(232, 272, 47, 47, 160, "home");
  13.                     pushtokiste("home");
  14.                 case 1 :
  15.                     makemask(232, 272, 47, 47, 160, "home");
  16.                 case 2 :
  17.                     makemask(232, 152, 47, 23, 80, "home");
  18.                 case 3 :
  19.                     makemask(112, 272, 47, 47, 160, "home");
  20.                 case 4 :
  21.                     makemask(232, 272, 47, 23, 80, "lupe");
  22.                     makemenu("kontakt", 112, 272, 0);
  23.                     bar["pfeil"+o]._alpha = 100;
  24.         }
  25.         inaction = false;
  26.     };
  27. }
  28. }
  29. for (w=0; w<nav_arr.length; w++) { 
  30.     _root.navbar["but"+w].onRollOver = buttonaction(w)
  31. }
  32. ...

der ganze code ist nahezu 200 zeilen lang und enthält ziemlich viel was nichts mit dem thema zu tun hat deshalb lasse ich es aus...

Geändert von trebek (29-06-2005 um 15:30 Uhr)
trebek ist offline   Mit Zitat antworten
Alt 29-06-2005, 15:33   #2 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Auf jeden Fall wir "w" schon mal bis zum Ende durchgezählt (ist dann immer 4). So sollte es gehen:
ActionScript:
  1. for (var w=0; w<nav_arr.length; w++) {
  2.     _root.navbar["but"+w].id = w
  3.     _root.navbar["but"+w].onRollOver = buttonaction(this.id);
  4. }
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 29-06-2005, 15:40   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Beiträge: 51
hmm leider nicht, meine buttons reagieren nicht und im ausgabefenster kriege ich folgendes:

wenn ich "buttonaction(_root.navbar["but"+w].id);" benutze
}
"0
undefined
1
undefined
2
undefined
3
undefined
4
undefined"

bzw.

"undefined
undefined
undefined
undefined
undefined"

für: "buttonaction(this.id);"
trebek ist offline   Mit Zitat antworten
Alt 29-06-2005, 15:42   #4 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Beiträge: 51
hab auch den code nochmal durchgeschaut und ich finde nichts was irgendwie die funktion aufruft, ich vermute dass

ActionScript:
  1. _root.navbar["but"+w].onRollOver = buttonaction();
(also ein aufruf einer funktion anstatt "function() {}") evt. nicht möglich ist???
trebek ist offline   Mit Zitat antworten
Alt 29-06-2005, 15:45   #5 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Beiträge: 51
hmm so:

ActionScript:
  1. for (w=0; w<nav_arr.length; w++) {
  2.     _root.navbar["but"+w].id = w;
  3.     _root.navbar["but"+w].onRollOver = function() {
  4.         buttonaction(this.id);
  5.     };
  6. }

regieren die buttons und werte werden übergeben, überprüfe grade meinen code auf irgendwelche fehler, die ich evt. beim rumprobieren eingebaut habe...
trebek ist offline   Mit Zitat antworten
Alt 29-06-2005, 15:59   #6 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Beiträge: 51
ok ich habe mein fehler gefunden ich hatte keine "break's" in meiner switch schleife, so funktionierts:

ActionScript:
  1. function buttonaction(u) {
  2.     if (!inaction) {
  3.         inaction = true;
  4.         _root.navbar["pfeil"+o]._alpha = 0;
  5.         o = u;
  6.         if (active<>"but"+o) {
  7.             removemask();
  8.             switch (_root.navbar["but"+u].id) {
  9.             case 0 :
  10.                 makemask(232, 272, 47, 47, 160, "home");
  11.                 pushtokiste("home");
  12.                 break;
  13.             case 1 :
  14.                 makemask(232, 272, 47, 47, 160, "home");
  15.                 break;
  16.             case 2 :
  17.                 makemask(232, 152, 47, 23, 80, "home");
  18.                 break;
  19.             case 3 :
  20.                 makemask(112, 272, 47, 47, 160, "home");
  21.                 break;
  22.             case 4 :
  23.                 makemask(232, 272, 47, 23, 80, "lupe");
  24.                 makemenu("kontakt", 112, 272, 0);
  25.                 break;
  26.             }
  27.         }
  28.         bar["pfeil"+o]._alpha = 100;
  29.     }
  30.     inaction = false;
  31. }
  32. for (w=0; w<nav_arr.length; w++) {
  33.     _root.navbar["but"+w].id = w;
  34.     _root.navbar["but"+w].onRelease = function() {
  35.         buttonaction(this.id);
  36.     };
  37. }

danke danke!
trebek 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 23:58 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele