Fading externer JPGs "spinnt"

intercorni

Erfahrenes Mitglied
Hallo,

ich habe einen Hauptfilm, indem sich eine ScrollBar befindet, die ein externes Textfile einlädt. Im Textfile befindet sich eine Linkliste. Per "asfunction" werden nun externe MCs in einen "Container" MC welcher auf der Hauptzeitleiste liegt, eigeladen.
Soweit klappt das auch gut.

In dem eingeladenen MC wird per AS externe JPGs eingeladen und per _alpha ineinander gefadet. Das kalppt für sich so allein gut. Rufe ich diesen MC dann jedoch über die Scrollbar auf und klicke mehrmals diesen Ladelink an, fängt das Fading an zu "spinnen" Hier die URL dazu: Link

Hier das Script des Hauptfilms, indem alles zusammen laufen soll:
Code:
this.stop();
_root.balken_mc._visible = false;
//Textfeldformatierung
mytxt._width = 260;
mytxt._height = 120;
mytxt._x=203;
mytxt._y=162;
//Ausrichtung der Scrollbar am Textfeld
mybar.setSize(mytxt._height);
mybar._x = mytxt._x+mytxt._width;

//Text laden
this.loadVariables("linkliste.txt");
this.onData = function() {
        mytxt.htmlText = my_html_text.split("rn").join("").split("n").join("");
        zeilen = mytxt.bottomScroll;
        gesamt = mytxt.bottomScroll+mytxt.maxscroll-1;
        delete my_html_text;
};

function textlink(welches) {//Links aus Text als AS definieren
        _root.container.loadMovie(welches);


Hier der Inhalt des Textfiles in der ScrollBar (linkliste.txt):
Code:
my_html_text= <p align="left"> <textformat leftmargin="5" rightmargin="5"> <font face="verdana, arial, _sans" size="10" color="#000000"> <a href="asfunction:textlink,movieblender.swf"> Link1 </a> <br> <a href="asfunction:textlink,movie02.swf"> Link2 </a> </font> </p>


Und hier schliesslich das AS des MC "movieblender.swf", indem drei externe JPG ineinander gefadet werden:
Code:
//zum testen einen ordner "pic" anlegen, bilder "pic1-pic3" benennen!!
var tl = this;
var fadespeed = 3;//<---Fading-Geschwindigkeit
_global.old_conti;
_global.ct = 1;
function reload_x() {
        tl.createEmptyMovieClip("container"+ct, ct+10);
        tl["container"+ct].loadMovie("pictures/pic"+ct+".jpg");
        tl["container"+ct]._alpha = 0;
        this.loader_funk = function() {
                if (tl["container"+ct].getBytesLoaded()>=4) {
                        gesamt = tl["container"+ct].getBytesTotal();
                        bereits = tl["container"+ct].getBytesLoaded();
                        prozent = Math.ceil((bereits/gesamt)*100);
                        _root.balken_mc._visible = true;
                        _root.balken_mc._xscale = prozent;
                        if (prozent>=100) {
                                tl["container"+ct]._alpha += fadespeed;
                                old_conti._alpha -= fadespeed;
                                if (tl["container"+ct]._alpha>=100 && old_conti._alpha<=0) {
                                        old_conti.unloadMovie();
                                        _global.old_conti = tl["container"+ct];
                                        clearInterval(loadID);
                                        _global.ct++;
                                }
                                if (ct == 4) {
                                        _global.ct = 1;
                                }
                        }
                }
        };
        loadID = setInterval(loader_funk, 10);
}
reload_x();
SID = setInterval(reload_x, 5000);//<---interval setht jetzt auf 5 sekunden

Wie gesagt funktioniert es bei einmaligen Anklicken, beim zweiten vielleicht auch noch, aber dann klappts mit dem Faden hintereinander nicht mehr.
Woran kann das liegen?

Hier sind die Files abgelegt: Link

Über Hilfe würde ich mich wirklich sehr freuen.

Cornel.
 
Hi,

Du solltest beide verwendeten Intervalle (loadID und SID) zuerst (mit clearInterval) löschen, sobald Du einen Link anklickst. Definierst Du ein Intervall neu, werden bisher laufende Intervalle nicht gelöscht, sondern überlagern sich, was zu bemerkenswerten Ergebnissen führt.

Gruß
.
 
Danke für die Antworten,

ich habe versucht, die Intervalle per Mouseclick zu löschen:
Code:
function textlink(welches) {//Links aus Text als AS definieren 
    _root.container.loadMovie(welches);
    _root.container.clearInterval( loadID );//Interval loadID löschen
    _root.container.clearInterval( SID );//Interval SID löschen

}

Funktioniert leider nicht. Kann ich denn die Intervalle so nicht löschen?

Gruss,

Cornel
 
Wenn die Pfade ansonsten stimmen, müsste es so lauten:
PHP:
clearInterval(_root.container.loadID);
clearInterval(_root.container.SID);

Gruß
.
 
Hm, so funktioniert es leider auch nicht.
Der Container-MC liegt auf der Hauptzeitleiste und in diesen wird
dieser Fading-MC eingeladen.
Wenn ich die Anweisung zum laden gebe und damit auch clearInterval
kombiniere, funktioniert das Bildfading leider auch nur beim ersten mal,
danach wird kein Bild mehr angezeigt:
Code:
function textlink(welches) {//Links aus Text als AS definieren 
    _root.container.loadMovie(welches);
    clearInterval(_root.container.loadID);
    clearInterval(_root.container.SID); 

}

Welche Möglichkeiten gäbe es noch?

Cornel.
 
... kannst Du die Datei mal posten? Den recht verschachtelten Code "trocken" zu debuggen ist doch schon etwas umständlich. ;)

Gruß
.
 
Hi,

ich weiß nicht, was sich in den anderen zu ladenden swf-Dateien befindet (wahrscheinlich etwas ähnliches wie in "movieblender.swf"), aber beim Neuladen einer swf-Datei in den Container laufen auch alle Intervalle des Containers weiter - auch wenn dieser Container überschrieben wird.

Die Variable "var tl = this;" ist überflüssig, da Du den Container direkt referenzieren kannst.

Du musst dafür sorgen, dass in der Funktion "textlink" alle Intervalle im aktuellen Container gelöscht werden, bevor eine neue Datei eingeladen wird. Sorge zunächst dafür, dass auch die Datei "movie02.swf" die selben Intervallbezeichner verwendet wie "movieblender.swf" (wenn es dort überhaupt Intervalle gibt). Nun lösche vor dem Laden eines neuen Filmes diese Intervalle:
PHP:
function textlink(welches) {//Links aus Text als AS definieren 
    clearInterval(container.loadID);
    clearInterval(container.SID); 
    container.loadMovie(welches);
}

Gruß

P.S.: richtig testen konnte ich es nicht, da mit a) die Bilder und b) die "movie02.swf" fehlen. ;)
.
 
Zurück