Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 15-01-2005, 09:32   #1 (permalink)
.
 
Benutzerbild von woifaaal
 
Registriert seit: Oct 2001
Ort: Wien
Beiträge: 238
function frage

Hallo Leute,
ich bin leider kein Actionscript Profi und stehe etwas auf der Leitung bei einer sicher ganz einfachen Aufgabe.

Folgendes möchte ich erreichen:

Ein swf soll auf buttonclick ein weiteres swf laden (Hintergrundbilder, die sich überblenden). Das ist ja kein Problem. Clickt man einen anderen Button der Hauptnavi, soll dieser Hintergrund verschwinden und ein neuer auftauchen. Auch das ist kein Problem. Jetzt hätte ich aber gerne folgendes:
clicke ich wieder zurück auf den ersten button, soll der erste Hintergrund wieder da sein. ABER ER SOLL SICH NICHT WIEDER NEU LADEN MÜSSEN.

Ich habe mir gedacht, das löse ich mit einer Funktion, ich weiß aber nicht genau wie die Funktion aussehen muss, hier mein Ansatz.

AS 1.Frame Hauptzeitleiste Genau hier liegt mein Problem, was muss hier hin?

Code:
function mc1geladen ();
_root.mc1geladen=false;
Analog dazu mc2



AS 4.Frame mc1 (1.Frame nach einem preloader):
Code:
_root.mc1geladen=true;
Analog dazu mc2



AS an Button, der mc1 lädt:
Code:
on release {
if _root.mc1geladen=true {
_root.mc1._visible=true;
}
else {
loadMovie ("swf/mc1.swf",_root.mc1);
}
}
_root.mc2._visible=false;
AS an Button, der mc2 lädt:
Code:
on release {
if _root.mc2geladen=true {
_root.mc2._visible=true;
}
else {
loadMovie ("swf/mc2.swf",_root.mc2);
}
}
_root.mc1._visible=false;
Vielen Dank für Eure Hilfe

Geändert von woifaaal (15-01-2005 um 09:33 Uhr)
woifaaal ist offline   Mit Zitat antworten
Alt 15-01-2005, 11:27   #2 (permalink)
Muecke_Romeo
Gast
 
Beiträge: n/a
Das Einzige, was mir auf Anhieb auffällt, sind kleine Syntaxfehler... in einer if-Abfrage müssen immer 2 "=" stehen und das Ganze stets in Klammern.
PHP-Code:
on release {  
if (
_root.mc1geladen==true) {
      
_root.mc1._visible=true;  
      }  
else {  
     
loadMovie ("swf/mc1.swf",_root.mc1);  
     }  
_root.mc2._visible=false;

Für mc2 gilt natürlich das Selbe..
  Mit Zitat antworten
Alt 15-01-2005, 21:02   #3 (permalink)
.
 
Benutzerbild von woifaaal
 
Registriert seit: Oct 2001
Ort: Wien
Beiträge: 238
Offenbar übersteigen Funktionen derzeit noch meinen begrenzten Horizont.

Ich habe es nun versucht anders (wesentlich einfacher) zu lösen. Obwohl es für mich absolut logisch klingt, funktioniert es aber nicht.

auf dem mit "home" beschrifteten Frame steht nun:

Code:
if (_root.mc1geladen = "true") {
	_root.containermc1._visible = 1;
}else{
	loadMovie ("swf/mc1.swf",_root.containermc1);
}
stop ();
Das komische ist: mc1.swf lädt sich nicht. Die Pfade sind aber alle in Ordnung, denn vor dem einsetzen der ganzen Geschichte mit Funktion, etc. hat alles funktioniert.

Auf dem externen Movie steht dann nach einem Preloader auf dem dritten Frame
Code:
_root.mc1geladen = "true";
Aber soweit kommt es ja gar nicht, weil die swf sich nicht lädt.

ich habe auch schon probiert im ersten Frame
Code:
mc1geladen = "false";
zu schreiben, aber njet...
woifaaal ist offline   Mit Zitat antworten
Alt 16-01-2005, 00:41   #4 (permalink)
Muecke_Romeo
Gast
 
Beiträge: n/a
Du hast schon wieder nur ein "=" verwendet. In if-Abfragen immer ein absolutes istgleich, also "==" !!!!!

Bin mir jetzt nicht sicher, aber ich glaub, der externe swf hat ja ne eigene Hauptbühne, deshalb könnte es Probleme geben, wenn in der eigendlichen .fla und im externen sfw von _root gesprochen wird. Ersetz mal _root durch _global

Ein bischen einfacher ist es auch, wenn du loadMovie über den zielclip aufrufst, also
PHP-Code:
_root.zielMovieClip.loadMovie("/swf/extern.sfw"); 
Hoffe, das hilf weiter, wenn nicht, nochmal posten
  Mit Zitat antworten
Alt 16-01-2005, 07:27   #5 (permalink)
.
 
Benutzerbild von woifaaal
 
Registriert seit: Oct 2001
Ort: Wien
Beiträge: 238
Hallo, danke für Dein Hilfeangebot.
Also ich habe jetzt folgendes gemacht: "=" durch "==" und "_root" durch "_global" ersetzt. Du hast recht, mit _root funktioniert es nicht. Allerdings habe ich eine andere swf mit externer swf, die kann über _root.play(); die Hauptbühne steuern. Manchmal verstehe ich flash wirklich nicht...

Mein Problem ist aber noch folgendes:
die if-Abfrage funktioniert nicht richtig, denn das swf wird immer wieder neu geladen, wenn ich auf den "one" frame zurückkehre.

Ich habe es mit trace mal ausprobiert, folgender Code auf "home":
PHP-Code:
trace(mc1geladen);
if (
_root.mc1geladen == "true") {
    
_root.containermc1._visible 1;
}else{
    
_root.containermc1.loadMovie("swf/mc1.swf");;
}
stop (); 
Ausgabefenster zeigt "undefined".

mc1.swf lädt sich wie gewünscht (auf frame 3 steht folgendes Skript):
PHP-Code:
_global.mc1geladen "true";
trace (mc1geladen); 
Ausgabefenster zeigt "true". So weit so gut.

Ich clicke nun auf einen Button, mit folgendem Skript, der mich zu einem anderen frame bringt:
PHP-Code:
on (release) {
    
_root.containermc1._visible 0;
    
gotoAndStop ("two");


mit folgendem Button geht es wieder zurück:
PHP-Code:
on (release) {
    
gotoAndStop ("one");
    
trace(mc1geladen);

Das Ausgabefenster zeigt überraschender weise "undefined" "undefined" (warum zwei mal?) und dann erst "true", als ob mc1 in der zwischenzeit entladen werden würde. Es wird aber in containermc1 kein anderes swf geladen. Auch gehen die frames der Ebene containermc1 sowohl über "one", als auch über "two" und zwar ohne Schlüsselbild dazwischen.

Ich verstehe es einfach nicht!!!
woifaaal ist offline   Mit Zitat antworten
Alt 16-01-2005, 13:25   #6 (permalink)
Muecke_Romeo
Gast
 
Beiträge: n/a
Du hast hier und da mal _root, dann wieder _global, dann wieder gar nichts stehen...... Konsequenter weise würde ich vorschlagen, zunächst mal vor jeden "mc1geladen" ein _global zu schreiben. Dadurch ist gewährleistet, dass alle Scripte vom gleichen mc1geladen sprechen. Für mc2 etc gilt natürlich das Selbe.

Du hast in deiner If-Abrage nicht nach dem boolschen Wert true gefragt, sondern, ob mc1geladen den string "true" zugewiesen bekommen hat. Wurde aber nie getan. Dewegen weg mit den Aführungsstrichen. Einfach nur


PHP-Code:
if (_global.mc1geladen == true) {       
     
_root.containermc1._visible 1;   
}else{       
     
_root.containermc1.loadMovie("swf/mc1.swf");   
}   
stop (); 
N kleiner Syntaxfehler ist auch wieder drin.. Du hast einmal 2 Simikolons stehen.. Nächster Versuch

Geändert von Muecke_Romeo (16-01-2005 um 13:26 Uhr)
  Mit Zitat antworten
Alt 18-02-2005, 12:11   #7 (permalink)
.
 
Benutzerbild von woifaaal
 
Registriert seit: Oct 2001
Ort: Wien
Beiträge: 238
Unhappy

So, das war leider eine längere Pause. Ich hatte leider keine Zeit, um mich darum zu kümmern, aber jetzt sitze ich wieder fieberhaft davor.

Ich habe nun Dein Skript verwendet:
PHP-Code:
if (_global.mc1geladen == true) {
    
_root.containermc1._visible 1;
}else{
    
_root.containermc1.loadMovie("swf/mc1.swf");
}
stop (); 
Zur Erinnerung: auf Bild 3 (nach dem Preloader) des mc1.swf steht:
PHP-Code:
_global.mc1geladen "true"
Der containermc1 ist auf allen Frames des gesamten swf enthalten (ohne zusätzliches Schlüsselbild). Wenn ich nun per Button
PHP-Code:
on (release) {
    
gotoAndStop ("contact");

auf das Bild "contact" springe, lädt sich der mc1 wieder neu, obwohl auch hier das gleiche Skript
PHP-Code:
if (_global.mc1geladen == true) {
    
_root.containermc1._visible 1;
}else{
    
_root.containermc1.loadMovie("swf/mc1.swf");
}
stop (); 
hinterlegt ist.
Das kann doch nicht sein, oder???
woifaaal 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 13:28 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele