Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08-02-2004, 20:44   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2004
Beiträge: 8
Aktionen zusammen legen

Hallo,
ich krieg das einfach nicht hin....
also hab ne lange Liste von Buttons. bei jedem Button soll etwas anderes passieren (logischerweise). geht auch alles wunderbar (ist ja nicht so schwer...sülz)

jetzt möchte ich meine Liste von Buttons in einer for schleife oder sowas zusammenlegen.... aber wie????

das wär die Liste meiener Buttons, so wie ich es als Anfänger mache.
ActionScript:
  1. bilder=new Array("p_693", "p_593", "p_386", "p_137", "p_301", "p_343", "p_340", "p_376", "p_749", "p_674", "p_385");
  2. abstand=10;    //gibt den Abstand zwischen den Bilder an
  3. neutral=1077;         //Startpunkt des ersten Bildes
  4. //bildLang=new Array(); //gibt die Längen der Bilder zurück (wird nicht wirklich benötigt)
  5. optMitte=neutral;
  6. neuPos=new Array();  //gibt die neuen Positionen der Bilder zurück
  7. neuPos[0]=neutral;
  8. for(i=0; i<=10; i++){   
  9.     //bildLang[i] =_root[bilder[i]]._width;(wird nicht mehr benötigt)
  10.     //berechnet Länge und neue Position in einem Schritt
  11.     neuPos[i+1]=neuPos[i]-_root[bilder[i]]._width-abstand;
  12. }
  13.  
  14.  
  15. this.bt_693.onRollOver=function(){
  16.     optMitte=neuPos[0];
  17. }
  18. this.bt_593.onRollOver=function(){
  19.     optMitte=neuPos[1];
  20. }
  21. this.bt_386.onRollOver=function(){
  22.     optMitte=neuPos[2];
  23. }
  24. this.bt_137.onRollOver=function(){
  25.     optMitte=neuPos[3];
  26. }
  27. this.bt_301.onRollOver=function(){
  28.     optMitte=neuPos[4];
  29. }
  30. this.bt_343.onRollOver=function(){
  31.     optMitte=neuPos[5];
  32. }
  33. this.bt_340.onRollOver=function(){
  34.     optMitte=neuPos[6];
  35. }
  36. this.bt_376.onRollOver=function(){
  37.     optMitte=neuPos[7];
  38. }
  39. this.bt_749.onRollOver=function(){
  40.     optMitte=neuPos[8];
  41. }
  42. this.bt_674.onRollOver=function(){
  43.     optMitte=neuPos[9];
  44. }
  45. this.bt_385.onRollOver=function(){
  46.     optMitte=neuPos[10];
  47. }

meine bisherigen Experimente sind folgendermaßen:

ActionScript:
  1. knopf=new Array();
  2. for(k=0; k<=10; k++){
  3.     knopf[k]=_root["bt_"+bilder[k].slice( 2, 5 )];
  4.     knopf[k].onRollOver=function(){
  5.         for(f=0; f<=10; f++){
  6.             switch (f) {
  7.                 case f :
  8.                     optMitte=neuPos[f];
  9.         trace(optMitte);
  10.         break;
  11.             }
  12.         }
  13.     }
  14. }

...oder so ähnlich????
klappt jedenfalls nich. Eigentlich müßte ich irgendwie abfragen, über welchem Button ich mich eigentlich befinde.

Ich hoffe es ist deutlich, was ich will.... bin eben doch Anfänger

Freu mich auf eure Hilfe!
danollik ist offline   Mit Zitat antworten
Alt 08-02-2004, 21:57   #2 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
hm... hab leider nicht recht verstehen können was du willst. was sollen die buttons können, oder willste die mit ner for schleife attachen?

cya, sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 09-02-2004, 11:59   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2004
Beiträge: 8
Ich dachte, dass man die Buttons in einer for Schleife zusammenlegen kann. Och kann natürlich jeden Button einzeln aufrufen, so wie ich es auch zuerst getan habe und es wunderbar funktioniert. Aber es muss doch ne Möglichkeit geben, alles in einer Schleife ablaufen zu lassen und die Buttons holen sich den neuen Wert aus einer Liste.

Naja, ich wollt den Code einfach etwas kürzen.... vielleicht trotzden ne Idee??
danollik ist offline   Mit Zitat antworten
Alt 09-02-2004, 13:03   #4 (permalink)
Neuer User
 
Registriert seit: Aug 2001
Ort: Austria/Vienna
Beiträge: 225
Müßte so gehen, habs aber nicht getestet
ActionScript:
  1. knopf = new Array();
  2. for (k = 0; k <= 10; k++) {
  3.     knopf[k] = _root["bt_" + bilder[k].slice(2, 5)];
  4.                 //erstmals den einzelnen Buttons die richtige Nummer zuweisen: nr wird direkt im Button gespeichert
  5.     this[knopf[k]].nr=k;
  6.     this[knopf[k]].onRollOver = function() {
  7.                                 //dann die neue Mitte aus dem neuPos-Array an der Stelle this.nr auslesen
  8.         optMitte=neuPos[this.nr];
  9.        
  10.     };
  11. }

Hoffe das funkt, probiers mal so

lg TF
TigerFox ist offline   Mit Zitat antworten
Alt 09-02-2004, 17:36   #5 (permalink)
Neuer User
 
Registriert seit: Jan 2004
Beiträge: 8
nee, geht leider nicht... aber vielen Dank. So ähnlich hat ich's auch schon. Deswegen bin ich auf die case funktion gekommen... wußte aber nicht so richtig wie ich die handhabe.

Bei Lingo (director) ging so was auch mit case, soweit ich mich erinnere (ist leider schon etwas her, dass ich mit director gewerkelt habe).

Hat vielleicht noch jemand ne Idee
danollik ist offline   Mit Zitat antworten
Alt 10-02-2004, 11:06   #6 (permalink)
Neuer User
 
Registriert seit: Aug 2001
Ort: Austria/Vienna
Beiträge: 225
So gehts

ActionScript:
  1. //-----TF ---- hab mal das Array gekürzt;
  2. bilder = new Array("p_693", "p_593", "p_386", "p_137", "p_301");
  3. abstand = 10;
  4. //gibt den Abstand zwischen den Bilder an
  5. neutral = 1077;
  6. //Startpunkt des ersten Bildes
  7. //bildLang=new Array(); //gibt die Längen der Bilder zurück (wird nicht wirklich benötigt)
  8. optMitte = neutral;
  9. neuPos = new Array();
  10. //gibt die neuen Positionen der Bilder zurück
  11. neuPos[0] = neutral;
  12. // -----TF ---- tmp Bildbreite nur zum Testen
  13. tmpBildBreite = 20;
  14. for (i = 0; i <= bilder.length; i++) {
  15.     //berechnet Länge und neue Position in einem Schritt
  16.     //-----TF ----  ich hänge die neuen Werte mit Array.push(neuerWert) an
  17.     neuPos.push(neuPos[i] - tmpBildBreite - abstand);
  18. }
  19. knopf = new Array();
  20. for (k = 0; k < bilder.length; k++) {
  21.     knopf[k] = _root["bt_" + bilder[k].slice(2, 5)];
  22.     //erstmals den einzelnen Buttons die richtige Nummer zuweisen: nr wird direkt im Button gespeichert
  23.     knopf[k].nr = k;
  24.     knopf[k].onRollOver = function() {
  25.         //dann die neue Mitte aus dem neuPos-Array an der Stelle this.nr auslesen
  26.         //-----TF ----
  27.         trace(optMitte = neuPos[this.nr]);
  28.     };
  29. }

Ich häng noch das test-fla mit

TF
Angehängte Dateien
Dateityp: zip test.zip (2,7 KB, 3x aufgerufen)
TigerFox ist offline   Mit Zitat antworten
Alt 10-02-2004, 17:26   #7 (permalink)
Neuer User
 
Registriert seit: Jan 2004
Beiträge: 8
Ich bin begeistert!!!
So hab ich mir das Vorgestellt, vielen Dank.

Mit meiner case Funktion war ich wohl auf dem Holzweg...
danollik 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 06:42 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele