Adobe Flash Inhalte einblenden bzw ausblenden lassen

Noerdliche

Mitglied
Thread Starter
Mitglied seit
28.08.2003
Beiträge
152
Im Hauptfilm habe ich 4 Buttons.
Wenn ich Button1 klicke, soll sich der Inhalt (eins.swf) in einem leeren Container öffnen.
Wenn ich dann auf Button2 klicke, soll sich der Inhalt 1 ausblenden und der Inhalt 2 (zwei.swf) einblenden.

Gibt es eine Möglichkeit dem Button2 die Anweisung zu geben, dass der bestehende Inhalt sich langsam ausblendet bevor der neue Inhalt sich wieder einblendet?

Die Anweisung muss ja irgendwie allgemein gehalten werden, weil man ja nicht weiß, welcher Inhalt gerade gezeigt wird und welcher Inhalt danach gezeigt werden soll, oder?
 

Aramon

Mitglied
Mitglied seit
29.11.2006
Beiträge
1.038
Hallo Noerdliche,

spontan würde mir jetzt nur eine Idee einfallen.
und zwar muss die Ausblendung in der "eins.swf" erfolgen.
Erstelle ein STOP im letzten Frame von eins.swf
Danach erstelle ein neues Schlüsselbild hinter dem Schlüsselbild mit dem STOP. Gib dem Schlüsselbild den Namen "Abspann". Dort lässt du das Bild ausblenden z.B. Alpha Wert des Bildes auf 0 setzen. Im letzten Frame des Abspannes rufst du deine zwei.swf Datei auf.


Die Button musst du logischerweise auch anders verlinken. Anstantt die SWF zwei.swf aufzurufen, verlinkst du auf den Namen "Abspann" von eins.swf. Der Link würde dann wohl so aussehen
root.gotoAndStop("Abspann");


Wie gesagt, so müsste es eigentlich klappen. Hoffe das ich es genau beschrieben habe und dir damit helfen konnte.
 
Zuletzt bearbeitet:

Noerdliche

Mitglied
Thread Starter
Mitglied seit
28.08.2003
Beiträge
152
Hi Aramon!

genau da liegt mein Problem:
Ich weiß ja nie, WELCHER der vier Button geklickt wird.

Wenn im letzten Bild nach dem Abspann von eins.swf der Film zwei.swf automatisch aufgerufen wird, wäre das ja immer so.
Ich meine, wenn jamand erst Button1 anklickt bekommt er Inhalt1 aus dem Film eins.swf. Wenn der user dann aber Button3 anklickt, wäre die Anweisung in eins.swf: öffne zwei.swf.

Weiß Du was ich meine?
Es gibt ja diverse Kombinationen.
Von Button1 zu Button2
Von Button1 zu Button3
Von Button1 zu Button4.
 

Aramon

Mitglied
Mitglied seit
29.11.2006
Beiträge
1.038
Ich weiß jetzt leider nicht wie dein Flash aussieht. Aber du kannst doch ein IF Abfrage einbauen, welcher Button gerade gedrückt wird.
z.B. wenn Button1 gedrückt ist, dann lade die Datei swf1.swf
wenn Button2 gedrückt, dann lade Datei swf2.swf und so weiter.

Oder du übergibst beim drücken des Button einen Wert (Variabelname z.B. swf1) mit, diese ersetzt dann im letzten Frame (Abspann) die zu ladene Datei.


Um was für ein Projekt geht es eigentlich. Wenn die Buttons eine Navigation sind,sollte es so funktionieren wie ich es zu Anfang beschrieben habe. Aber warum wechseln deine Button denn immer die Kombinationen?!? Poste doch mal was es genau werden soll wenn es fertig ist. So stelle ich mir gerade eine etwas durcheinander geratende Navigation vor. ;-)
 

2nd

Mitglied
Mitglied seit
25.07.2004
Beiträge
9.020
Ich würde nicht mit GoTos arbeiten. Mit Actionscript geht es eleganter.

Du brauchst eine Funktion (Prototypen) zum Ausblenden (_alpha) und einen MC als Zwischencontainer.

Auf die Buttons legst Du per AS die Anweisung, dass der Container MC mit der Prototypen-Funktion ausgeblendet wird. Parallel lädst Du den neuen MC. Ist der fertig geladen und der Container ausgeblendert, entfernst Du den "alten" MC aus dem Container und fügst den neuen an. Dann wieder einblenden und fertig.

2nd
 

Noerdliche

Mitglied
Thread Starter
Mitglied seit
28.08.2003
Beiträge
152
Das hört sich so einfach an...
Gabe jetzt nach langem suchen etwas gefunden:
stop();

MovieClip.prototype.fadinout = function(inorout, fadeto, speed, steps, bremsspeed, toload, loadtarget) {
var mc = this;
var i = 0;
if(inorout){
mc.onEnterFrame = function() {
i+=bremsspeed;
mc._alpha -= (steps*i);
if (mc._alpha <= fadeto) {
loadtarget.unloadMovie();
loadtarget.loadMovie(toload);
delete this.onEnterFrame;
mc._alpha = fadeto;
mc.fadinout(0, 100, 50, 2, 1);
}
};
}else if(!inorout){
mc.onEnterFrame = function() {
i+=bremsspeed;
mc._alpha += (steps*i);
if (mc._alpha >= fadeto) {
delete this.onEnterFrame;
mc._alpha = fadeto;
}
};
}
}

deinMc.onRelease = function(){
this.fadinout(1,12,50,2,1,"home.swf",laden);
}

Das scheint ja so ein Prototyp zu sein, oder?
Um ihn aber für meine Zwecke ändern zu können, fehlt mir das Wissen, wo dieses Script hinkommt :o(. Kommt das in den hauptfilm oder jeweils in die einzelnen Filme, die geladen werden sollen?

Ich habe vier buttons, die liegen im Hauptfilm. Da ist ein leerer MC ( Instanzname: laden), in dem die swf Filme geladen werden sollen.
Button1->aboutus.swf
Button2->showroom.swf
Button3->contact.swf
Button4->imprint.swf

Viele Grüße aus dem Norden!
 

Theremin

Mitglied
Mitglied seit
16.12.2003
Beiträge
100
ich vorschlagen, mal einen Blick auf die TransitionManager - Klasse und die Tween- klasse zu werfen. Probiere mal die Beispiele in der Flashhilfe durch, da sind tolle Effekte dabei - zum Faden des _alpha gibe es eine Methode Fade.


oder halt so:

PHP:
function fade(mc_clip, prop, effect, s_value, e_value, interval) {
	var blendobject:Object = new Tween(mc_clip, prop, effect, s_value, e_value, interval, true);
	blendobject.FPS = 32;
};

fade(dein_movieclip, "_alpha", mx.transitions.easing.Regular.easeInOut, 60, 0, 2);
Fadet den Clip von 60 auf 0.
 

stenser

Mitglied
Mitglied seit
21.10.2003
Beiträge
781
Oder lässt brutaler weise alle anderen außer eben das geklickte ausfaden und das neue einfaden.
Nicht elegant wird aber dennoch und sicher funktionieren.


Jens
 

stenser

Mitglied
Mitglied seit
21.10.2003
Beiträge
781
Oder du arbeitest mit _invisible.

Dann kannst du erst checken welcher gerade visible is und lässte gerade eben den ausfaden und setzt ihn danach auf invisible.


Jens