Flashhilfe.de - Flash Community

bei Buttonklick die zu verlassende Seite schließen [Flash 10]

 


AntwortenRegistrieren Seite1  

websnake75#1
Benutzerbild von websnake75
Beiträge: 22
Registriert: Oct 2009

05.08.2011, 18:50

Hallo,

ich habe ein Problem, welches ich nicht gelöst bekomme.

In meiner Szene gibt es drei Buttons und drei Inhaltsseiten, wobei jede dieser Seiten eine andere Farbe hat. Klicke ich nun auf Button1 wird Page1 angezeigt und ein Tweening mit Skalierung läuft ab.

Klicke ich nun z.B. auf Button3, wird Page3 angezeigt und die Skalierungsanimation läuft ab.

Ich möchte aber nun erreichen, dass beim Klick auf Button3 erst die Page1 (wenn ich da gerade bin) quasi geschlossen wird und dann erst zu Page3 gesprungen wird.

Also wie bei einem Theatervorhang. Ich sehe Page1 beim Klick auf Button3 schließt sich der Vorhang vor Page1, der Vorhang geht auf und ich sehe Page3.

Kann mir da bitte jemand helfen, wie man das umsetzen kann?

Als Anlage mal eine fla-Datei zum probieren und besseren Verständnis.

Gruß

Ronald

Angehängte Dateien:
Adobe Flash Quelldatei Skalierungstest.fla12.15 KB
Schlagwörter: button, tweening
vindel#2
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

05.08.2011, 20:13

Hallo,

ich habe das mal erstellt -> siehe Anhang.
Wenn ein Button geklick wird, wird die Nummer des Bildes gespeichert, die nun gezeigt werden soll. Anschließend wird der aktuelle Hintergrund (Brauchen einen Instanznamen -> unter Eigenschaften) abgespielt. In Bild 10 ist dann der Aufruf der Funktion newPage. In dieser Funktion wird zum neune Bild gewechselt und in diesem Bild dann der Hintergrund ab Bild 11 abgespielt.
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}

Angehängte Dateien:
Adobe Flash Quelldatei Skalierungstest.fla52.50 KB
websnake75#3
Benutzerbild von websnake75
Beiträge: 22
Registriert: Oct 2009

Themenautor/in

06.08.2011, 11:54

Hallo,

der Code von Vindel funktioniert wunderbar. Ich habe nun den einzelnen Seiten einen Sound hinzugefügt. Dabei hat sich ein neues Problem gezeigt. Wenn ich nämlich von der Seite 2 oder 3 komme und den Button1 wähle, wird der Sound offensichtlich 2mal gespielt. Hat da jemand eine Idee wodurch das kommt und wie man das lösen kann?

Gruß

Ronald

Ich habe die fla-Datei mit Sound nochmal drangehängt.

Angehängte Dateien:
Adobe Flash Quelldatei Skalierungstest.fla116.07 KB
vindel#4
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

06.08.2011, 12:17

Also, du geht in deine Hintergründe und ziehst den Sound ein Frame nach vorne, sodass im ersten Bild kein Sound ist. in das erste schreibst du dann "stop();".
Dann geht du in deinen Hauptcode und aktualisiert die gotoAndPlay()-Methode in allen 3 Klick-Funktionen:
ActionScript:
1bg.gotoAndPlay(2);
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}
websnake75#5
Benutzerbild von websnake75
Beiträge: 22
Registriert: Oct 2009

Themenautor/in

06.08.2011, 12:44

Vielen Dank Vindel,

funktioniert wunderbar.
websnake75#6
Benutzerbild von websnake75
Beiträge: 22
Registriert: Oct 2009

Themenautor/in

07.08.2011, 13:33

Hallo,

nun habe ich versucht meine fla.Datei nochmal zu erweitern und komme wieder nicht weiter.

Ich möchte nun erreichen, dass das Bild über meinen Buttons jeweils das passende Bild zu der jeweiligen Page anzeigt. In meinem Beispiel sollten demnach immer die passenden Farben gezeigt werden. Ich komme leider nicht drauf, was ich falsch mache. Kann mir da jemand helfen?

Angehängte Dateien:
Adobe Flash Quelldatei Skalierungstest_menubild.fla122.40 KB
vindel#7
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

08.08.2011, 10:00

Du hast doch ganz am Ende deine Funktion:
ActionScript:
1
2
3
4
function newPage():void {
     gotoAndStop(currentPage);
     bg.gotoAndPlay(11);
}

Diese wird immer ausgeführt sobald eine Seite ausgeblendet wurde und die nächste eingeblendet werden soll.
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}
websnake75#8
Benutzerbild von websnake75
Beiträge: 22
Registriert: Oct 2009

Themenautor/in

08.08.2011, 10:39

Hallo Vindel,

ich habe auch an der von Dir angemerkten Position schon verschiedene Experimente gemacht, die mich aber nicht zum gewünschten Ergebnis brachten.

Nun bin ich nochmal einen Schritt zurück gegangen. Dabei habe ich schon einige Fehler von mir gefunden. Die Farben in den Animationen 2 und 3 waren vertauscht und im Code auf der Hauptzeitleiste fehlten auch ;.

Mit meinem jetzigen Beispiel funktioniert zwar alles beim Klick auf Button2 kommt aber folgender Fehler:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
   at Skalierungstest_menubild2_fla::ani_menu_bild03_12/frame10()
   at flash.display::MovieClip/gotoAndStop()
   at Skalierungstest_menubild2_fla::MainTimeline/newPage()
   at Skalierungstest_menubild2_fla::page03_10/frame10()

Diese Meldung sagt mir leider nichts. Ich habe, so meine ich zumindest, doch alles so wie bei Deinem Code für die anderen Pages gemacht.

Angehängte Dateien:
Adobe Flash Quelldatei Skalierungstest_menubild2.fla122.47 KB
vindel#9
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

09.08.2011, 10:26

Hallo,

das ist ein klassischer Copy-Paste-Fehler.
Du hast deinen "bg"-Mc kopiert für die Anzeige oben. Natürlich mit allem Script drin.
Das Script:
ActionScript:
1
2
var myParent:MovieClip = parent as MovieClip;
myParent.newPage();
Muss aber nur ein mal pro wechsel ausgeführt werden - bei dir wird das zwei mal. Also in deinen menu_pic-mc's den Befehl löschen.
Dann hast du noch eine "Doppelung".
Wenn der MC menu_pic beim Start der animation (also beim Ausblenden) gestartet werden soll, muss der Befehl in alle Buttons (wie du es ja hast, nur über all dann natürlich Bild1 - willst ja vorne anfangen!). Wenn es erst beim Seitenwechsel gestartet werden soll, dann musses in der Funktion newPage machen. Aber zwei mal aufrufe (wies jetzt ist) ist unsinn.
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}
websnake75#10
Benutzerbild von websnake75
Beiträge: 22
Registriert: Oct 2009

Themenautor/in

09.08.2011, 17:14

Hallo,

Vindels Erläuterung war sehr hilfreich, vielen Dank dafür.

Ich habe auch die entsprechenden Änderungen vorgenommen undder Fehler ist weg. Es hat sich nun leider ein neues Problem eingestellt. Den Fehler konnte ich auch schon eingrenzen, nur behoben bekomme ich ihn nicht so richtig.

Der Fehler ist, das nun bei jedem Klick auf den selben Button das Bild in der jeweiligen Page bei Bild 20 anhält aber bei den menu_pics bei einem Klick bei Bild 1 und beim zweiten Klick bei Bild 20 anhält.

Wenn ich jetzt bei den menu_pics den Stop-Befehl bei Bild1 rausnehme, löst das mein Problem zwar, hat aber einen nicht gewollten Effekt wenn man die Szene das erste mal ansieht. Die Page hält nämlich bei Bild1 das menu_pic erst bei Bild20, weil ich ja den Stop-Befehl rausgenommen habe. Außerdem wird die menu_pic Animation bei jedem Klick auf einen anderen Button zweimal abgespielt.

Hat jemand eine Lösung für dieses Problem?

Angehängte Dateien:
Adobe Flash Quelldatei Skalierungstest_menubild2.fla123.01 KB
vindel#11
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

09.08.2011, 18:10

Das problem liegt - wie auch schon weiter oben mit dem BG - an dem Aufbau deiner MC's. Da du ja zu erst die Animation zum verschwinden hast, wird diese natürlich auch beim Wechsel zu erst abgespielt. Wenn du jetzt von deinem aktuellen Bild die Animation zum verschwinden spielst, dann das Bild gewechselt wird - na, wird dein Bild noch mal ausgeblendet.
Wie auch schon bim BG musst du nach dem Bildwechsel in Frame 11 springen:
ActionScript:
1
2
3
4
5
function newPage():void {
     gotoAndStop(currentPage);
     bg.gotoAndPlay(11);
     menu_pic.gotoAndPlay(11);
}

und ganz an den Anfang deines Scriptes ein "menu_pic.stop()" einfügen - dann wirds beim ersten mal nicht direkt abgespielt!
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}
websnake75#12
Benutzerbild von websnake75
Beiträge: 22
Registriert: Oct 2009

Themenautor/in

10.08.2011, 12:15

Super Vindel, jetzt funktioniert es wie gewollt und dank Deiner guten Erläuterungen leuchtet es mir auch ein.

Jetzt versuche ich das Projekt nochmal zu verändern und möchte erreichen, dass sich das Menubild bei rollOver des entsprechenden Buttons ändert. Mein Lösungsansatz funktioniert nur beim Button1, ich weis auch warum, stecke jetzt aber trotzdem fest. Hier mal mein Problem:

rollOver Button1 - greift auf Instanz menu_pic zu, in bild1 liegt nun Instanz bg1 = läuft
rollOver Button2 - greift auf Instanz menu_pic zu, in bild1 liegt nun aber nicht Instanz bg2 = geht also so nicht, bei Button3 geht das demzufolge auch nicht

Hat da jemand eine Idee, wie man das lösen kann?

Angehängte Dateien:
Adobe Flash Quelldatei Skalierungstest_menubild.fla122.39 KB
vindel#13
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

11.08.2011, 10:25

Also du musst erst in deinem MovieClip "menu_pic" in das entsprechende Bild springen, was jetzt angezwigt werden soll:
ActionScript:
1menu_pic.gotoAndStop(1);
oder halt 2, 3.
Dann musst du den Inhalt ab Frame 11 abspielen:
ActionScript:
1menu_pic.bg1.gotoAndPlay(11);
oder halt:
ActionScript:
1menu_pic.bg2.gotoAndPlay(11);

für Button 2.
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2022 Sebastian Wichmann - Flashhilfe.de