Dynamische Bilder einfaden

jay2

Grünschnabel
Hallo in die Runde,

ich bin relativ neu in Flash, was Sachen AS etc. angeht und haben mich jetzt seit ein paar Tagen mal rangesetzt und einiges ausprobiert. Hab auch alles irgendwie so hinbekommen, wie ich es bis jetzt wollte :D

Nur steh ich gerade vor folgendem Problem:

Meine Seite lädt am Anfang einen dynamischen Text + Bild, welche eingefadet werden.. Dann habe ich einen Button, mit dem ein anderer dynamischer Text eingefadet wird, klappt auch super. NUR habe ich das Problem, dass das Bild, welches auf der Startseite mit dem Home Text eingefadet wird, bei klick auf den Button auch wieder eingefadet wird. Ich möchte aber nur noch Text eingefadet haben nachdem man auf den Button klickt.

Leider hab ich meine .fla Datei momentan nicht hier, hoffe man versteht einigermaßen was ich meine :suspekt:

Habe folgende Codes benutzt

Auf dem Frame

Code:
_root.mainText._alpha = 0; // Die beiden Elemente unsichtbar machen, damit sie am Anfang sosofrt einfaden
_root.Aufmacher._alpha = 0;
ausfaden = true; // Den setzen wir von anfang an auf true, damit "home" sofort angezeigt wird
einfaden = false; // Soll eingefadet werden?
txt = new LoadVars(); // Unser LoadVars-Objekt
ladetext = "home.txt"; // Dateiname der Textdatei
ladebild = "Home.jpg"; // Dateiname der Bilddatei

_root.onEnterFrame = function() {
    if(_root.ausfaden) 
    { // Soll ausgefadet werden?
        _root.mainText._alpha -= 8;
        _root.Aufmacher._alpha -= 8;
        if(_root.mainText._alpha < 4) {
            ausfaden = false;
            txt.onLoad = function() {
                _root.mainText.text = txt.content;
                _root.einfaden = true; // erst text laden, dann einfaden
            }
            _root.Aufmacher.loadMovie(ladebild);
            txt.load(ladetext); // Text laden
        }
    } else if(einfaden) 
    { // Soll ausgefadet werden?
        _root.mainText._alpha += 8;
        _root.Aufmacher._alpha += 8;
        if(_root.Aufmacher._alpha > 98) {
            einfaden = false;
        }
    }    
}

Auf dem Button

Code:
on(release) {
	_root.ladetext = "news.txt";
	_root.ausfaden = true;
}

Da ich mich mit AS wie gesagt nicht so auskenne, weiß ich leider nicht wo ich nach dem Fehler suchen soll, denn auf dem Button selbst habe ich ja keinen Befehl gegeben, dass das Bild geladen werden soll.

Hoffe mir kann jemand weiterhelfen :)
 
Hallo,

in der onEnterFrame-Schlaufe unterscheidest du ja nicht zwischen Text und Bild, beide Alpha-Werte werden jeweils gleich untereinander angesprochen:
Code:
_root.onEnterFrame = function() {
    if(_root.ausfaden) 
    { // Soll ausgefadet werden?
        _root.mainText._alpha -= 8;
        _root.Aufmacher._alpha -= 8;
        if(_root.mainText._alpha < 4) {
            ausfaden = false;
            txt.onLoad = function() {
                _root.mainText.text = txt.content;
                _root.einfaden = true; // erst text laden, dann einfaden
            }
            _root.Aufmacher.loadMovie(ladebild);
            txt.load(ladetext); // Text laden
        }
    } else if(einfaden) 
    { // Soll ausgefadet werden?
        _root.mainText._alpha += 8;
        _root.Aufmacher._alpha += 8;
        if(_root.Aufmacher._alpha > 98) {
            einfaden = false;
        }
    }    
}

An deiner Stelle würde ich verschiedene Funktionalitäten in verschiedene Funktionen unterteilen: Eine Funktion für die Bildblende, eine für die Schrift-Transparenz etc. Sonst kommst vom hundertsten ins tausenste und bist am Schluss nur noch am "if else"-Schlaufen prügeln.

gruss
 
Hallo,

super danke für deine Antwort erstmal, habe mir schon gedacht, dass es irgendwas damit zutun hat. Aber wie gesagt, da ich in AS nicht viel Ahnung habe, und gerade erst damit anfange, wäre es nett wenn du mir deinen Vorschlag ein wenig genauer erklären könntest, oder anhand eines Beispiels zeigen? Wenn es dir nicht's ausmacht. Oder wo ich mich genauer darüber Informieren kann

Ich versuche schon die ganze Zeit AS mehr zu verstehen, aber muss zugeben der Anfang is recht schwer :)

Gruss
 
Zuletzt bearbeitet:
Hallo,


im folgenden Skript findest du zwei Funktionen, die eine ist für die Bildblende, die andere für die Textblende zuständig. Als Parameter akteptieren beide Funktionen einerseits einen Zielwert für die _alpha-Eigenschaft und einen zweiten für das Tempo der Blende.
Eine dritte Funktion initiiert das Laden eines neuen Textes, d.h. das Textfeld wird ausgeblendet und der load-Aufruf des LoadVars-Objekts wird mit dem Parameter "dateiname" getätigt. Den Aufruf des Bild-Fades würd ich nicht in der onLoad-Funktion platzieren, da diese ja bei jedem Eintreffen von neuem Inhalt ausgeführt wird.

Code:
mainText._alpha = 0; // Die beiden Elemente unsichtbar machen, damit sie am Anfang sosofrt einfaden
Aufmacher._alpha = 0;
var ladetext = "home.txt"; // Dateiname der Textdatei
var ladebild = "Home.jpg"; // Dateiname der Bilddatei
var txt = new LoadVars(); // Unser LoadVars-Objek

txt.onLoad = function() {
	mainText.text = this.content;
	textBlende(100, .4);
	
}

function ladeNeuenText (dateiname) {
	textBlende(0, .9);
	txt.load(dateiname);
}

function bildBlende (alpha, tempo) {	
	Aufmacher.onEnterFrame = function () {
		var dif = alpha - this._alpha;
		dif *= tempo;
		this._alpha += dif;
	}
}

function textBlende (alpha, tempo) {
	onEnterFrame = function () {
		var dif = alpha - mainText._alpha;
		dif *= tempo;
		mainText._alpha += dif;
	}
}


Aufmacher.loadMovie(ladebild);
bildBlende(100, .2);
ladeNeuenText(ladetext);

gruss
 
Hey,

danke erstmal für das Beispiel, habe soweit versucht es zu verstehen :D und dann mal ausprobiert, jedoch fadet jetzt der Text am Anfang ein, das Bild erscheint aber gar nicht mehr.

Und muss ich das AS vom Button jetzt auch ändern? Der reagiert nämlich nach der Änderung nicht mehr.
 
Zurück