Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 03-01-2005, 13:59   #1 (permalink)
rookie
 
Benutzerbild von rok°!
 
Registriert seit: Apr 2002
Beiträge: 370
per setInterval ein bild mehrmals einblenden lassen

mit hilfe von salazar's fadeinout-script hab ich eine funktion gebastelt, die ein bild aus dem verzeichnis lädt und diese dann zufällig in einem raster darstellt (siehe anhang).

ziel des ganzen ist es nun, nicht nur eine grafik zu laden, sondern mehrere und diese anzuzeigen. bis zum laden ist das sicherlich auch kein problem (-> ich lasse mit einem php-script ein verzeichnis auslesen und gebe die dateinamen in ein array im fla).

jetzt wollte ich einfach mit setinterval die function showPic() alle 2 sekunden aufrufen. Dann hat es aber nicht mehr gefunzt. müsste doch zum testen erst mal auch nur mit einem pic gehen, oder?
Angehängte Dateien
Dateityp: zip test.zip (12,3 KB, 13x aufgerufen)
__________________
Das Newslettersystem auf deiner Homepage!
rok°! ist offline   Mit Zitat antworten
Alt 03-01-2005, 15:53   #2 (permalink)
Neuer User
 
Benutzerbild von dr_gonzo
 
Registriert seit: Apr 2004
Ort: Pforzheim
Beiträge: 69
so funktionierts mit dem Array(), must halt nur noch umbauen für deine Wünsche

greetz
Angehängte Dateien
Dateityp: zip test.zip (13,6 KB, 17x aufgerufen)
dr_gonzo ist offline   Mit Zitat antworten
Alt 03-01-2005, 16:11   #3 (permalink)
rookie
 
Benutzerbild von rok°!
 
Registriert seit: Apr 2002
Beiträge: 370
hi!

danke erstemal, dass du dich meinem problem angenommen hast

aber ich wollte die bilder schon in einem vorgegebenen raster anzeigen (hast du ja alles gelöscht?). außerdem wollte ich die bilder nicht einfach hintereinander, sondern willkürlich anzeigen lassen. deswegen wollte ich setinterval nutzen, dass ich zum beispiel nach 2 sekunden das nächste bild irgendwo platzieren lassen kann.
damit dann später nicht 2 bilder angezeigt werden, kann ich ja noch ne überprüfungsvariable einbauen.

mir geht es aber in erster linie darum, das mir die grafiken willkürlich im vorgegebenen raster angezeigt werden.
__________________
Das Newslettersystem auf deiner Homepage!
rok°! ist offline   Mit Zitat antworten
Alt 03-01-2005, 16:26   #4 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
hier bitte schön...

erklärung ist unten!

ActionScript:
  1. stop();
  2. // Anzahl der mc's pro x-y-Reihe
  3. var xReihe = 6;
  4. var yReihe = 5;
  5. var bild = "illu-fig-k.jpg";
  6. var ziele = new Array();
  7. // Fläche erstellen
  8. y = 0;
  9. for (j=1; j<=xReihe; j++) {
  10.     x = 0;
  11.     for (i=1; i<=yReihe; i++) {
  12.         ziel = (j*100)+i;
  13.         ziele.push(ziel);
  14.         this.createEmptyMovieClip("mc"+ziel, ziel);
  15.         this["mc"+ziel]._x = x;
  16.         this["mc"+ziel]._y = y;
  17.         trace(ziel);
  18.         x = x+70;
  19.     }
  20.     y = y+70;
  21. }
  22. // <--
  23. // rotation:
  24. // -->
  25. function showPic(tar) {
  26.     this= tar;
  27.     zufall = Math.floor(Math.random()*ziele.length);
  28.     var con = this["mc"+ziele[zufall]];
  29.     con._alpha = 0;
  30.     con.loadMovie(bild);
  31.     this.createEmptyMovieClip("w", 842);
  32.     w.onEnterFrame = function() {
  33.         if (con._width>0) {
  34.             delete this.onEnterFrame;
  35.             con.fadinout(0.01, 6);
  36.         }
  37.     };
  38. }
  39. intval = setInterval(showPic, 2000, this);
  40. // <--
  41.  
  42.  
  43. MovieClip.prototype.fadinout = function(st, br) {
  44.     var mc = this;
  45.     var i = 0;
  46.     var fin = 1;
  47.     delete mc.onEnterFrame;
  48.     mc.onEnterFrame = function() {
  49.         if (fin == 0) {
  50.             i += br;
  51.             mc._alpha -= (st*i);
  52.             if (mc._alpha<=0) {
  53.                 delete mc.onEnterFrame;
  54.             }
  55.         } else if (mc._alpha<=100 && fin == 1) {
  56.             i += br;
  57.             mc._alpha += (st*i);
  58.             if (mc._alpha>=100) {
  59.                 fin = 0;
  60.                 i = 0;
  61.             }
  62.         }
  63.     };
  64. }

folgende zeilen müssen verändert werden.

in der funktion showPic MUSS ein parameter mit rein (tar).
in der ersten zeile der funktion kommt ein

ActionScript:
  1. this = tar;
rein... mehr nicht.

und natürlich dein interval aufruf:
ActionScript:
  1. intval = setInterval(showPic, 2000, this);

das war´s... ersetze einfach dein komplettes script mit dem hier via copy&paste...
(sicher aber vorher..!*g*)

und gut iss..


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 03-01-2005, 18:39   #5 (permalink)
rookie
 
Benutzerbild von rok°!
 
Registriert seit: Apr 2002
Beiträge: 370
jau!
genial! ich dank die wie verrückt

wieso muss eigentlich nochmal "this" mit an die funktion übergeben werden?
__________________
Das Newslettersystem auf deiner Homepage!
rok°! ist offline   Mit Zitat antworten
Alt 03-01-2005, 19:05   #6 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
das problem ist bei via setInterval gerufenen funktionen, auch wenn sie methoden einer klasse wären, dass der scope praktisch 'verloren' geht und auf das interval-objekt selbst zeigt.

das heißt, dass 'this' innerhalb einer funktion, die via interval gerufen wird, auf das intervalobjekt selbst zeigt udn nicht mehr auf den rufer der funktion.


verstanden?


freut mich, dass es so iss, wie du wolltest


greetz

kelor
kelor 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 00:28 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele