Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 16-08-2004, 10:38   #1 (permalink)
Neuer User
 
Registriert seit: Aug 2004
Beiträge: 12
Unhappy Parameter für Annonyme Funktion

Huhu Leude!
Ich hätte da eine kleine Frage. Gibt es eine Möglichkeit einer annonymen Funktion einen Parameter zu übergeben? So wie unten angeführt hätt ichs versucht... aber so klappt es nicht.

this[newButton].onRelease = function(testvar){
trace(testvar);
};
Phil999 ist offline   Mit Zitat antworten
Alt 16-08-2004, 10:52   #2 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
das sind festgelegte onEvents, denen kann man so keinen parameter mitgeben...

*mal anmerk* das hat nix mit anonymer funktion zu tun*

was willst du denn machen?


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 16-08-2004, 10:56   #3 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Man könnte es aber ergänzen, z.B.
ActionScript:
  1. this.meinButton.onRelease = function(){
  2.    _level0.meineFunktion(uebergabeparameter);
  3. }
  4. this.meineFunktion = function (wert){
  5. ...
  6. }
  Mit Zitat antworten
Alt 16-08-2004, 10:59   #4 (permalink)
Neuer User
 
Registriert seit: Aug 2004
Beiträge: 12
Ich zeig euch am besten mal das ganze Teil was ich machen wollte
Ich erzeuge über die Funktion createMenu() und der darin enthaltenen For Schleife, ein paar Buttons. Und diesen Buttons möchte ich eben gleich bei ihrem entstehen ein onRelease Event mit verpassen.
Der Teil würde ja auch super funktionieren.... nur brauch ich dort drin mein i als parameter. Um zu wissen welche Array "Tutpaths" ich dem jeweiligen Button zuordnen soll.
Hoffe ich wisst was ich mein

function createMenu() {
for (i=0; i<myButtons.length; i++) {
newButton = "button"+i;
this.original_b.duplicateMovieClip(newButton, i);
this[newButton]._x = original_b._x;
this[newButton]._y = original_b._y+(original_b._height*i);
this[newButton].b_text = myButtons[i];

this[newButton].onRelease = function(i){
_root.createEmptyMovieClip("mymov",75);
_root.mymov.loadMovie(_root.myTutpaths[i]);
};

}
}
Phil999 ist offline   Mit Zitat antworten
Alt 16-08-2004, 11:06   #5 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
ActionScript:
  1. function createMenu() {
  2.   for (i=0; i<myButtons.length; i++) {
  3.        newButton = "button"+i;
  4.       this.original_b.duplicateMovieClip(newButton, i);
  5.       this[newButton].i = i;
  6.       this[newButton]._x = original_b._x;
  7.       this[newButton]._y = original_b._y+(original_b._height*i);
  8.       this[newButton].b_text = myButtons[i];
  9.  
  10.       this[newButton].onRelease = function(i){
  11.             _root.createEmptyMovieClip("mymov",75);
  12.             _root.mymov.loadMovie(_root.myTutpaths[this.i]);
  13.       };
  14.  
  15.   }
  16. }






greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 16-08-2004, 11:09   #6 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Das geht nur, wenn du den Buttons eine zusätzliche Kennung mitgibst oder z.B. den Wert aus dem Buttonnamen (button1, button2 -> Zahl extrahieren) herauslöst.
ActionScript:
  1. this[newButton].onRelease = function(){
  2. this.wert = this._name.substring(this._name.length-1,this._name.length);//funzt aber so nur für Button 0-9
  3. _root.createEmptyMovieClip("mymov",75);
  4. _root.mymov.loadMovie(_root.myTutpaths[this.wert]);
  5. };

Edit: @kelor: damit widersprichst du deinem Post ("das sind festgelegte onEvents, denen kann man so keinen parameter mitgeben...")

Geändert von agedoubleju (16-08-2004 um 11:12 Uhr)
  Mit Zitat antworten
Alt 16-08-2004, 11:13   #7 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
@age...
guggst du mal oben drüber meinen beitrag*

oder hab ich was verpeilt?*gugg*


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 16-08-2004, 11:14   #8 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
Zitat:
Edit:@kelor: damit widersprichst du deinem Post ("das sind festgelegte onEvents, denen kann man so keinen parameter mitgeben...")

nope...dem event geb ich gar nix mit, age...
ich hänge nur dem objekt/mc ne eigenschaft an...
aber dem event übergeb ich keine params...


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 16-08-2004, 11:14   #9 (permalink)
Neuer User
 
Registriert seit: Aug 2004
Beiträge: 12
@ kelor
Funzt leider net... da krieg ich immernoch ein "undefined" zurück.

@ agedoubleju
Hmm muss ich mal versuchen. Nur leider weis ich jetzt schon das es mehr als 9 werden
Phil999 ist offline   Mit Zitat antworten
Alt 16-08-2004, 11:17   #10 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
phil...dann liegt der fehler woanders...

natürlich geht das so....

bsp:

ActionScript:
  1. for(var i=1; i<=10; i++){
  2.  
  3.     this['button'+i].i = i;
  4.     this['button'+i].onRelease=function(){
  5.           trrace(this._name+' hat einen parameter i vo, wert : '+this.i);
  6.     }
  7. }


wenn du zehn buttons hast, die button1 - button10 heißen, dann geht das wunderbar...
der fehler muss also woanders liegen...


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 16-08-2004, 11:33   #11 (permalink)
Neuer User
 
Registriert seit: Aug 2004
Beiträge: 12
Hmm ich kann den Fehler einfach net finden Alle funzt, is korrekt definiert, usw. Aber das doofe i is am Ende immernoch "undefined".

Hast vielleicht mal kurz Lust ein Blick mein File rein zu gucken, ob du den Fehler siehst?!

HIER GEHTS ZUM FILE
Phil999 ist offline   Mit Zitat antworten
Alt 16-08-2004, 11:45   #12 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
phil...

erstens...muss das 'i ' ja wohl auch vorher zugewiesen sein...

außerdem existiert innerhalb der buttons kein Array namens

myTutpaths


sondern das liegt auf _root...

wenn du also dein script änderst in:

ActionScript:
  1. function createMenu() {
  2.     for (i=0; i<myButtons.length; i++) {
  3.         newButton = "button"+i;
  4.         this.original_b.duplicateMovieClip(newButton, i);
  5.         this[newButton]._x = original_b._x;
  6.  
  7.                           //hier ...dein i zuweisen
  8.         this[newButton].i =i;
  9.         this[newButton]._y = original_b._y+(original_b._height*i);
  10.         this[newButton].b_text = myButtons[i];
  11.         this[newButton].onRelease = function() {
  12.             myid = this.i;
  13.             trace(this._name+' ||| '+this.i);
  14.             this.createEmptyMovieClip("mymov", 75);
  15.                                       // myTutPaths liegt auf _root, also ohne 'this'
  16.             this.mymov.loadMovie(myTutpaths[this.i]);
  17.         };
  18.     }
  19. }



gibt bei mir korrekte werte aus....

sollte also funktionieren....


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 17-08-2004, 07:11   #13 (permalink)
Neuer User
 
Registriert seit: Aug 2004
Beiträge: 12
Hurraa Hat geklappt!
Dickes THX für die guten Tipps!!
Phil999 ist offline   Mit Zitat antworten
Alt 17-08-2004, 07:55   #14 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
Hi,

ich weiß, das Problem ist gelöst und es hat letztlich auch nichts mit Variablenübergabe zu tun gehabt. Ich wollte nur der Vollständigkeit halber anmerken, dass es sehr wohl möglich und sogar recht nützlich ist, Event-Methoden Parameter mitzugeben. Ich verwende es insbesondere bei onRelease, um zu unterscheiden, ob die Funktion vom AS getriggert wird oder ob der User selbst klickt:

ActionScript:
  1. myBtn.onRelease = function(calledByAS) {
  2.     trace(calledByAS);
  3. }

Wenn der User klickt, ist der Wert logischerweise false bzw. undefined. Beim Aufruf aus dem Code verwende ich dann myBtn.onRelease(true);
Ich finde es vor allem dann komfortabel, wenn ich meine onRelease-Aktion nicht zweimal schreiben will aber trotzdem die Unterscheidung brauche, z.B. zum Zählen von IVW-Pixeln, die nur bei User-Aktion gezählt werden dürfen...

Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 17-08-2004, 12:54   #15 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
@ludabruda: Was sind IVW-Pixel?
  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 00:15 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele