Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 13-07-2005, 19:40   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 39
Brauche Hilfe bei Menü - Lösung...

also ich habs mir so vorgestellt:
auf 'release' eines menü-buttons überprüft dieser erst mal ob bereits eine der anderen 'menü-sektionen' offen ist, und lässt gegebenen falls deren schließ-animation abspielen. danach spielt er seinen zugehörigen movie ab.


auf _root liegen alle 3 'menüsektionen', gestoppt, und mit leerem ersten frame sowie folgende variablen:

sektion1 = 0;
sektion2 = 0;
sektion3 = 0;


und diese funktion hätt der erste button

ActionScript:
  1. on (release) {
  2.         if (sektion1 == 1){
  3.             with(_root.sektion1movie){
  4.                 gotoAndPlay("close");
  5.             }
  6.         }
  7.         if (sektion2 == 1){
  8.             with(_root.sektion2movie){
  9.                 gotoAndPlay("close");
  10.             }
  11.         }
  12.         if (sektion3 == 1){
  13.             with(_root.sektion3movie){
  14.                 gotoAndPlay("close");
  15.             }
  16.         }
  17.     with(_root.sektion1movie){
  18.         gotoAndPlay("open");
  19.     }
  20. }


der "sektion1movie" setzt die variable natürlich auf "1" wenn er offen ist, und nach seiner schließ-animation auf "0".


so, das hab ich mir mit meinen minimalen actionscript kenntnissen aus den fingern gesaugt. würde das so funktionieren, oder wie gehts einfacher und schneller? dazu kommt dass es aus performance gründen sicher geschickter wäre die movies per 'release' erst auf die bühne zu laden. aber das übersteigt meinen horizont...

also, dann bringt mir mal was bei
greets the.cook
the.cook ist offline   Mit Zitat antworten
Alt 13-07-2005, 21:06   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Du solltest deine Überprüfungen über eine if-else if-Schleife machen, sonst können sich evtl. die Bedingungen überschneiden und es soll ja wenn ich das richtig verstanden habe sowieso nur ein MC zu sehen sein.

MCs kannst du zur Laufzeit mit createEmptyMovieClip erstellen und in diese MCs kannst du dann Filme oder jpgs nachladen:
ActionScript:
  1. //auf der Hauptzeitleiste
  2. this.createEmptyMovieClip("con",1);//leeren MC mit Instanznamen "con" auf Level 0, Tiefe 1 erstellen
  3. this.con.loadMovie("sektionmovie.swf");//und in den leeren MC einen Film nachladen
  4.  
  Mit Zitat antworten
Alt 13-07-2005, 21:24   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 39
ja, sorry- ich hab keine plan wie ich ne "if-else if-Schleife" formuliere?

und von der idee mit mehreren movieclips bin ich abgekommen, da die seite eher spartanisch ist und nicht soviel platz braucht.

mfg, the.cook
the.cook ist offline   Mit Zitat antworten
Alt 13-07-2005, 21:32   #4 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Du solltest dir wirklich mal die Flash-Basics antun, z.B. in der Flash-Hilfe oder den mitgelieferten Sample-Files...

ActionScript:
  1. if (sektion1 == 1){
  2.                 with(_root.sektion1movie){
  3.                         gotoAndPlay("close");
  4.                 }
  5.         }
  6.        else if (sektion2 == 1){//etc
  7.  

Und das Script mit dem ich den MC erstellt habe ist erst recht spartanisch und benötigt sehr wenig Platz. Auf jeden Fall weniger Platz, als würdest du den MC auf die Bühne legen...
  Mit Zitat antworten
Alt 13-07-2005, 22:14   #5 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 39
ja, ich glaub ein paar actionscript tutorials wären wirklich keine schlechte idee

wär dir aber wirklich verbunden wenn du noch kurz nen blick rein werfen könntest: jetzt funktionierts (danke für die hilfe ) das problem ist, dass sich schließ- und öffnungs animationen der beiden clips logischerweise überschneiden.
wie könnt ich das problem lösen? der movieclip soll ja auf knopfdruck starten. und erst wenn der gedrückt wird weiss er, dass der andere geschlossen werden soll...


was komisch ist:
wenn ich das script am ende mit nem ";" abschließen will reagiert der button überhaupt nicht mehr auf die maus. ich denke mit "strichpunkt" beendet man aktionen? bin fast wahnsinnig geworden bis ich auf den fehler gekommen bin!


ActionScript:
  1. on (rollOver) {
  2.     tellTarget ("btn1") {
  3.         gotoAndPlay("AUF");
  4.     }
  5. }
  6. on (rollOut) {
  7.     tellTarget ("btn1") {
  8.         gotoAndPlay("ZU");
  9.     }
  10. }
  11. on (release) {
  12.         if (menu1 == 1) {
  13.                 with (movie1) {
  14.                         gotoAndPlay("close");
  15.                 }
  16.         }
  17.         else if (menu2 == 1) {
  18.                 with( movie2) {
  19.                         gotoAndPlay("close");
  20.                 }
  21.         }
  22.         else if (menu3 == 1) {
  23.                 with (movie3) {
  24.                         gotoAndPlay("close");
  25.                 }
  26.         }
  27.         else if (menu4 == 1) {
  28.                 with (movie4) {
  29.                         gotoAndPlay("close");
  30.                 }
  31.         }
  32.         with (movie1) {
  33.                 gotoAndPlay("open");
  34.         }
  35. }

und das sind meine variablen auf _root:
ActionScript:
  1. menu1 = 0;
  2. menu2 = 0;
  3. menu3 = 0;
  4. menu4 = 0;
  5. stop();

mfg, the.cook
the.cook ist offline   Mit Zitat antworten
Alt 14-07-2005, 07:39   #6 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Du hast eine sehr umständliche Art, einfache Objektpfade zu setzen. Vergiss mal schnell wieder diese uralte umständliche tellTarget-Geschichte aus F4-Zeiten. Seit F5 gibt es die Objektpfade mit der Punktsyntax, z.B. _level0.meinObjektpfad.meineMCInstanz._meineMCEige nschaft

Auch würde ich keine Clipevents nutzen, weil du die nur auf die MCs/Buttons legen kannst und in einem größeren Script ständig am Suchen bist. Nimm besser Zeitleistenevents, die du alle an einer einzigen Stelle im Script auf der Hauptzeitleiste sammeln kannst. Du musst dann nur den MCs/Buttons Instanznamen geben, damit Flash die Objekte auch wiederfindet.

Dein Script sähe dann etwa wie folgt aus:
ActionScript:
  1. ////setz in den letzten Frame der vier MCs ein _global.movie = "ende";
  2. _global.movie = "";
  3. this.meineMCInstanz.onRollOver = function(){
  4.    this.gotoAndPlay("AUF");//wenn in diesem MC gesprungen wird
  5. }
  6. this.meineMCInstanz.onRollOut = function(){
  7.    this.gotoAndPlay("ZU");
  8. }
  9.  
  10. this.meineMCInstanz.onRelease = function(){//nach Klick
  11.    for(var i=1;i<5;i++){//Schleife viermal durchlaufen
  12.       if(_level0["menu"+i] == i){//erspart dir vier Abfragen
  13.          _level0["movie"+i].gotoAndPlay("close");
  14.        
  15.       }
  16.    }
  17.    
  18.    //jetzt einen onEnterFrame starten, der kontinuierlich überprüft, ob einer der vier obigen Filme zu Ende gespielt hat
  19.    this.onEnterFrame = function(){//kontinuierlich checken...
  20.       if(_global.movie == "ende"){//wenn der Film zu Ende ist, dann...
  21.          delete this.onEnterFrame;//zuerst den Event wieder löschen
  22.          _global.movie = "";//die Variable resetten
  23.          _level0.movie1.gotoAndPlay("open");//und den Opener spielen
  24.       }
  25. }
  26. }
  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 21:53 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele