Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 01-07-2005, 19:00   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 22
Question dynamischer Bildwechsel & Faden

Hi Community,

also eines gleich vorweg. Bisher, auch wenn ich noch nix gepostet habe, hat mir das Forum sehr viel weitergeholfen und ich hab viel dazugelernt.
Auch hab ich mir heute ein Mörderposting hier bzg. Bilderwechsel durchgelesen.

Und jetzt hab ich erst recht ein Problem und hoffe Ihr könnt mir helfen.
Was soll es werden?
Es müssen Bilder nachgeladen werden (nicht progressiv) über Variablen nach dem Dateinamen (datei.swf?eins=http....&zwei=http....usw.)
Wie das geht weiß ich ja. Der einfachheit halber hab ich das jetzt mal weggelassen im Script und anstelle der Variable die direkte URL eingetragen.

Eine Version die funktioniert habe ich ja.
Da ist aber das Problem dass ich in einen Ordner die Dateinamen mit bild1.jpg, bild2.jpg, bild3.jpg..... vorliegen haben muss. Das kann ich leider nicht brauchen, weil die Dateinamen bzw. URL's immer anders sein können.
Maximal sollen es aber 10 Bilder sein die sliden.
Aber auch hier wieder die Möglichkeit offenlassen ob nur ein Bild oder 10 Bilder eingetragen werden. Sieht man bei den ausdokumentierten Zeilen.
Jetzt hatte ich die Idee das mittels eines Arrays zu lösen, was aber nicht funktioniert

Anbei mal das Script wie ich es bisher habe:
ActionScript:
  1. // Definitionen
  2. var tl = this;
  3. var fadespeed = 5;
  4. var bildanzahl = 0;
  5. var bild = new Array();
  6. _global.old_conti;
  7. _global.ct = 1;
  8.  
  9. // Buttons aufbauen
  10. //if ((_root.eins == undefined) || (_root.eins == "")) {
  11. //  _root.bt1._visible = false;
  12. //} else {
  13.     bildanzahl = bildanzahl+1;
  14.     bild[bildanzahl] = "http://www.bidgo.de/userimg/grills/grill_alien_big.jpg";
  15. //}
  16. //if ((_root.zwei == undefined) || (_root.zwei == "")) {
  17. //  _root.bt2._visible = false;
  18. //} else {
  19.     bildanzahl = bildanzahl+1;
  20.     bild[bildanzahl] = "http://www.bidgo.de/userimg/grills/grill_atomic_big.jpg";
  21. //}
  22. //if ((_root.drei == undefined) || (_root.drei == "")) {
  23. //  _root.bt3._visible = false;
  24. //} else {
  25.     bildanzahl = bildanzahl+1;
  26.     bild[bildanzahl] = "http://www.bidgo.de/userimg/grills/grill_biohazard_big.jpg";
  27. //}
  28. //if ((_root.vier == undefined) || (_root.vier == "")) {
  29. //  _root.bt4._visible = false;
  30. //} else {
  31.     bildanzahl = bildanzahl+1;
  32.     bild[bildanzahl] = "http://www.bidgo.de/userimg/grills/grill_blade_big.jpg";
  33. //}
  34. //if ((_root.fuenf == undefined) || (_root.fuenf == "")) {
  35. //  _root.bt5._visible = false;
  36. //} else {
  37.     bildanzahl = bildanzahl+1;
  38.     bild[bildanzahl] = "http://www.bidgo.de/userimg/grills/grill_cs_big.jpg";
  39. //}
  40. //if ((_root.sechs == undefined) || (_root.sechs == "")) {
  41. //  _root.bt6._visible = false;
  42. //} else {
  43.     bildanzahl = bildanzahl+1;
  44.     bild[bildanzahl] = "http://www.bidgo.de/userimg/grills/grill_game_big.jpg";
  45. //}
  46. //if ((_root.sieben == undefined) || (_root.sieben == "")) {
  47. //  _root.bt7._visible = false;
  48. //} else {
  49.     bildanzahl = bildanzahl+1;
  50.     bild[bildanzahl] = "http://www.bidgo.de/userimg/grills/grill_radiation_big.jpg";
  51. //}
  52. //if ((_root.acht == undefined) || (_root.acht == "")) {
  53. //  _root.bt8._visible = false;
  54. //} else {
  55.     bildanzahl = bildanzahl+1;
  56.     bild[bildanzahl] = "http://www.bidgo.de/userimg/grills/grill_scorpion_big.jpg";
  57. //}
  58. //if ((_root.neun == undefined) || (_root.neun == "")) {
  59. //  _root.bt9._visible = false;
  60. //} else {
  61.     bildanzahl = bildanzahl+1;
  62.     bild[bildanzahl] = "http://www.bidgo.de/userimg/grills/grill_scream_big.jpg";
  63. //}
  64. //if ((_root.zehn == undefined) || (_root.zehn == "")) {
  65. //  _root.bt10._visible = false;
  66. //} else {
  67.     bildanzahl = bildanzahl+1;
  68.     bild[bildanzahl] = "http://www.bidgo.de/userimg/grills/grill_skull_big.jpg";
  69. //}
  70.  
  71.  
  72. if (bildanzahl > 0)
  73. {
  74.     function reload_x() {
  75.         clearInterval(SID);
  76.         tl.createEmptyMovieClip("container"+ct, ct+10);
  77.         tl["container"+ct].loadMovie(bild[ct]); // Hier wird das Bild geladen
  78.         tl["container"+ct]._alpha = 0;
  79.         this.loader_funk = function() {
  80.             if (tl["container"+ct].getBytesLoaded()>=4) {
  81.                 gesamt = tl["container"+ct].getBytesTotal();
  82.                 bereits = tl["container"+ct].getBytesLoaded();
  83.                 prozent = Math.ceil((bereits/gesamt)*100);
  84.                 if (prozent>=100) {
  85.                     tl["container"+ct]._alpha += fadespeed;
  86.                     old_conti._alpha -= fadespeed;
  87.                     if (tl["container"+ct]._alpha>=100 && old_conti._alpha<=0) {
  88.                         old_conti.unloadMovie();
  89.                         _global.old_conti = tl["container"+ct];
  90.                         clearInterval(loadID);
  91.                         _global.ct++;
  92.                         SID = setInterval(reload_x, 3000);
  93.                     }
  94.                     if (ct == (bildanzahl+1)) {
  95.                         _global.ct = 1;
  96.                     }
  97.                 }
  98.             }
  99.         };
  100.         loadID = setInterval(loader_funk, 40);
  101.     }
  102.     reload_x();
  103. }
Angehängte Dateien
Dateityp: zip slider03.zip (4,5 KB, 15x aufgerufen)
web4free ist offline   Mit Zitat antworten
Alt 01-07-2005, 19:30   #2 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
hmm...,
ich hab jetzt einfach die funktionsdefinition aus der if-Abfrage rausgenommen und schon funktionierts:
ActionScript:
  1. ....
  2. function reload_x() {
  3.     clearInterval(SID);
  4.     tl.createEmptyMovieClip("container"+ct, ct+10);
  5.     tl["container"+ct].loadMovie(bild[ct]);
  6.     // Hier wird das Bild geladen
  7.     tl["container"+ct]._alpha = 0;
  8.     this.loader_funk = function() {
  9.         if (tl["container"+ct].getBytesLoaded()>=4) {
  10.             gesamt = tl["container"+ct].getBytesTotal();
  11.             bereits = tl["container"+ct].getBytesLoaded();
  12.             prozent = Math.ceil((bereits/gesamt)*100);
  13.             if (prozent>=100) {
  14.                 tl["container"+ct]._alpha += fadespeed;
  15.                 old_conti._alpha -= fadespeed;
  16.                 if (tl["container"+ct]._alpha>=100 && old_conti._alpha<=0) {
  17.                     old_conti.unloadMovie();
  18.                     _global.old_conti = tl["container"+ct];
  19.                     clearInterval(loadID);
  20.                     _global.ct++;
  21.                     SID = setInterval(reload_x, 3000);
  22.                 }
  23.                 if (ct == (bildanzahl+1)) {
  24.                     _global.ct = 1;
  25.                 }
  26.             }
  27.         }
  28.     };
  29.     loadID = setInterval(loader_funk, 40);
  30. }
  31. if (bildanzahl>0) {
  32.     reload_x();
  33. }
...warum das anders nicht funktioniert, weiss ich nicht genau, sollte eigentlich auch gehen, rausgenommen hab ich's da, weil das einfach unsauber ist....
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois ist offline   Mit Zitat antworten
Alt 01-07-2005, 19:49   #3 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
Und hier nochmal Dein ganzes script überarbeitet
ActionScript:
  1. // Definitionen
  2. var tl = this;
  3. var fadespeed = 5;
  4. var bildanzahl = 0;
  5. var bild = new Array();
  6. _global.old_conti;
  7. _global.ct = 0;
  8. vari = ["eins", "zwei", "drei", "vier", "fuenf", "sechs", "sieben", "acht", "neun", "zehn"];
  9. bilder = ["grill_alien_big", "grill_atomic_big", "grill_biohazard_big", "grill_blade_big", "grill_cs_big", "grill_game_big", "grill_radiation_big", "grill_scorpion_big", "grill_scream_big", "grill_skull_big"];
  10. bild = [];
  11. //
  12. //Testzeilen bitte nachher löschen!!!
  13. //
  14. eins=true;
  15. drei=true;
  16. sieben=true;
  17. //
  18. //Ende Testzeilen
  19. //
  20. for (var i = 0; i<10; i++) {
  21.         if ((_root[vari[i]] == undefined) || (_root[vari[i]] == "")) {
  22.                 _root["bt"+(i+1)]._visible = false;
  23.         } else {
  24.                 bild.push("http://www.bidgo.de/userimg/grills/"+bilder[i]+".jpg");
  25.         }
  26. }
  27. delete vari;
  28. delete bilder;
  29. this.loader_funk = function() {
  30.                 if (tl["container"+ct].getBytesLoaded()>=4) {
  31.                         gesamt = tl["container"+ct].getBytesTotal();
  32.                         bereits = tl["container"+ct].getBytesLoaded();
  33.                         prozent = Math.ceil((bereits/gesamt)*100);
  34.                         if (prozent>=100) {
  35.                                 tl["container"+ct]._alpha += fadespeed;
  36.                                 old_conti._alpha -= fadespeed;
  37.                                 if (tl["container"+ct]._alpha>=100 && old_conti._alpha<=0) {
  38.                                         old_conti.unloadMovie();
  39.                                         _global.old_conti = tl["container"+ct];
  40.                                         clearInterval(loadID);
  41.                                         _global.ct++;
  42.                                         SID = setInterval(reload_x, 3000);
  43.                                 }
  44.                                 if (ct == (bild.length)) {
  45.                                         _global.ct = 1;
  46.                                 }
  47.                         }
  48.                 }
  49.         };
  50. function reload_x() {
  51.         clearInterval(SID);
  52.         tl.createEmptyMovieClip("container"+ct, ct+10);
  53.         tl["container"+ct].loadMovie(bild[ct]);
  54.         // Hier wird das Bild geladen
  55.         tl["container"+ct]._alpha = 0;
  56.        
  57.         loadID = setInterval(loader_funk, 40);
  58. }
  59. if (bild.length>0) {
  60.         reload_x();
  61. }

Gruß

Alois
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-

Geändert von Alois (01-07-2005 um 19:59 Uhr)
Alois ist offline   Mit Zitat antworten
Alt 01-07-2005, 20:10   #4 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 22
Thumbs up

Hallo Alois,

Erstmals danke für die schnelle Antwort.

Dein Erster Vorschlag hat schon ins Schwarze getroffen.
Unfassbar!!!! meine if Geschichte war der Schuldige. Pervers und unverständlich für mich.
Aber bitte es funktioniert.
Ich wollte halt sichergehen, dass wenn überhaupt keine Bilder übermittelt werden es nicht zu einer unnötigen Schleife kommt.

Dein 2. Beispiel kann ich leider so nicht verwenden, sorry!
ActionScript:
  1. ...
  2. vari = ["eins", "zwei", "drei", "vier", "fuenf", "sechs", "sieben", "acht", "neun", "zehn"];
  3. bilder = ["grill_alien_big", "grill_atomic_big", "grill_biohazard_big", "grill_blade_big", "grill_cs_big", "grill_game_big", "grill_radiation_big", "grill_scorpion_big", "grill_scream_big", "grill_skull_big"];
  4. bild = [];
  5. ...

Die Bilder dürfen nicht fix im Flash stehen, sondern werden über den Dateinamen übergeben.
Beispiel:
Code:
slider03.swf?eins=http://www.bidgo.de/userimg/grills/grill_alien_big.jpg&zwei=http://www.bidgo.de/userimg/grills/grill_atomic_big.jpg&drei=http://www.bidgo.de/userimg/grills/grill_biohazard_big.jpg&vier=http://www.bidgo.de/userimg/grills/grill_blade_big.jpg&fuenf=http://www.bidgo.de/userimg/grills/grill_cs_big.jpg&sechs=http://www.bidgo.de/userimg/grills/grill_game_big.jpg&sieben=http://www.bidgo.de/userimg/grills/grill_radiation_big.jpg&acht=http://www.bidgo.de/userimg/grills/grill_scorpion_big.jpg&neun=http://www.bidgo.de/userimg/grills/grill_scream_big.jpg&zehn=http://www.bidgo.de/userimg/grills/grill_skull_big.jpg
Die URL's und die Dateinamen können und werden immer anders sein.
Genauso die Anzahl der URL's. Da ist es möglich zwischen 0 und 10 (wobei 0 ja blöd wäre und deswegen meine if Abfrage)

Dennoch: Obwohl der Fehler ja minimal war ein riesiges Dankeschön!!!
web4free ist offline   Mit Zitat antworten
Alt 01-07-2005, 20:22   #5 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
Zitat:
Zitat von web4free
...

Dein 2. Beispiel kann ich leider so nicht verwenden, sorry!
ActionScript:
  1. ...
  2. vari = ["eins", "zwei", "drei", "vier", "fuenf", "sechs", "sieben", "acht", "neun", "zehn"];
  3. bilder = ["grill_alien_big", "grill_atomic_big", "grill_biohazard_big", "grill_blade_big", "grill_cs_big", "grill_game_big", "grill_radiation_big", "grill_scorpion_big", "grill_scream_big", "grill_skull_big"];
  4. bild = [];
  5. ...

Die Bilder dürfen nicht fix im Flash stehen, sondern werden über den Dateinamen übergeben.
Beispiel:
Code:
slider03.swf?eins=http://www.bidgo.de/userimg/grills/grill_alien_big.jpg&zwei=http://www.bidgo.de/userimg/grills/grill_atomic_big.jpg&drei=http://www.bidgo.de/userimg/grills/grill_biohazard_big.jpg&vier=http://www.bidgo.de/userimg/grills/grill_blade_big.jpg&fuenf=http://www.bidgo.de/userimg/grills/grill_cs_big.jpg&sechs=http://www.bidgo.de/userimg/grills/grill_game_big.jpg&sieben=http://www.bidgo.de/userimg/grills/grill_radiation_big.jpg&acht=http://www.bidgo.de/userimg/grills/grill_scorpion_big.jpg&neun=http://www.bidgo.de/userimg/grills/grill_scream_big.jpg&zehn=http://www.bidgo.de/userimg/grills/grill_skull_big.jpg
....
...aaah so (ich hatte es auch schon vermutet) dann noch einfacher:
ActionScript:
  1. // Definitionen
  2. var tl = this;
  3. var fadespeed = 5;
  4. var bildanzahl = 0;
  5. var bild = new Array();
  6. _global.old_conti;
  7. _global.ct = 0;
  8. vari = ["eins", "zwei", "drei", "vier", "fuenf", "sechs", "sieben", "acht", "neun", "zehn"];
  9. bild = [];
  10. for (var i = 0; i<10; i++) {
  11.         if ((_root[vari[i]] == undefined) || (_root[vari[i]] == "")) {
  12.                 _root["bt"+(i+1)]._visible = false;
  13.         } else {
  14.                 bild.push(_root[vari[i]]);
  15.         }
  16. }
  17. delete vari;
  18. this.loader_funk = function() {
  19.                 if (tl["container"+ct].getBytesLoaded()>=4) {
  20.                         gesamt = tl["container"+ct].getBytesTotal();
  21.                         bereits = tl["container"+ct].getBytesLoaded();
  22.                         prozent = Math.ceil((bereits/gesamt)*100);
  23.                         if (prozent>=100) {
  24.                                 tl["container"+ct]._alpha += fadespeed;
  25.                                 old_conti._alpha -= fadespeed;
  26.                                 if (tl["container"+ct]._alpha>=100 && old_conti._alpha<=0) {
  27.                                         old_conti.unloadMovie();
  28.                                         _global.old_conti = tl["container"+ct];
  29.                                         clearInterval(loadID);
  30.                                         _global.ct++;
  31.                                         SID = setInterval(reload_x, 3000);
  32.                                 }
  33.                                 if (ct == (bild.length)) {
  34.                                         _global.ct = 1;
  35.                                 }
  36.                         }
  37.                 }
  38.         };
  39. function reload_x() {
  40.         clearInterval(SID);
  41.         tl.createEmptyMovieClip("container"+ct, ct+10);
  42.         tl["container"+ct].loadMovie(bild[ct]);
  43.         // Hier wird das Bild geladen
  44.         tl["container"+ct]._alpha = 0;
  45.        
  46.         loadID = setInterval(loader_funk, 40);
  47. }
  48. if (bild.length>0) {
  49.         reload_x();
  50. }
...und jetzt komm mir nicht mit: "Die Dateinamen können auch wechseln...." dann musst Du auch in Deinem script rumbasteln und es ist doch wohl einfacher ein Arrayelement umzubenennen als die Werte einer if-Abfrage rauszusuchen. Und das verschieden viele Variablen definiert werden können .... na und??
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-

Geändert von Alois (01-07-2005 um 20:24 Uhr)
Alois ist offline   Mit Zitat antworten
Alt 01-07-2005, 20:34   #6 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 22
Hmmm, da geb ich Dir schon recht.
Ich hab Dir mal einen Anhang dazugemacht, damit Du siehst wie ich es jetzt habe.
Darinnen befindet sich auch das SWF und das html.
Ich wills jetzt mal so lassen, weil ich auch noch eine Stoppfunktion und eine Playfunktion einbauen muss . Zusätzlich sollen über die Buttons welche ja von der Anzahl her auch dynamisch angezeigt werden sollen, die Bilder einzeln angesprochen werden.

Also wenns nur 2 Bilder gibt sollen auch nur 2 Buttons zu sehen sein.
Bei 5 Bilder 5 Buttons usw.

Es wird Dir sicherlich grauen vor dem Source.
Aber es funzt und ich kenn mich aus
Angehängte Dateien
Dateityp: zip slider_neu.zip (8,5 KB, 41x aufgerufen)
web4free ist offline   Mit Zitat antworten
Alt 01-07-2005, 20:39   #7 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
Du kannst meinen Code problemlos durch meinen ersetzen, das funktioniert genau so gut/schlecht wie Deiner , aber das bleibt natürlich Dir überlassen...
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois ist offline   Mit Zitat antworten
Alt 01-07-2005, 20:44   #8 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 22
Hi,

abgelegt hab ich mir den Code schon mal.
Das muss ich jetzt auch mal machen, mir ein Archiv von AS anzulegen lokal.

Danke nochmals es war mir auf alle Fälle eine sehr große Hilfe!!!
Schönes Wochenende noch!!
web4free ist offline   Mit Zitat antworten
Alt 01-07-2005, 22:52   #9 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 22
Hi,

aber eine Frage hätt ich doch noch.
Hast Du einen kleinen Tipp für mich wie ich den Ablauf selbst durch einen Button stoppen kann und dann auch wieder vortsetzen kann.

mit _root.stop(); bzw. _root.play(); hustet er mir was.
Dann hab ich noch von hier ein AS probiert welches alle laufenden MC's stoppt, hat bei mir aber nur zu einer Fehlermeldung geführt.

Da wäre ich ganz viel dankbar für den Tipp
web4free 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 05:31 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele