Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 29-07-2005, 01:47   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2001
Ort: Stuttgart
Beiträge: 29
attachMovie + onClipEvent

Hallo,

ich erstelle mir gerade ein menü (lswf hier, zum besseren Verständnis). Mit den Hauptmenübuttons bin ich schon recht zufrieden. Mein Problem liegt eher bei den Submenübuttons, also die Felder, die zwischen den Hauptbuttons angezeigt werden sollen (zur zeit nur bei "Gästebuch").

Diese werden per attachMovie geladen, sobald der hauptbutton an die richtige _y-Position geslidet ist.

Dieses Sliden möchte ich auch für die Unterpunkte haben, jedoch hab ich keine Ahnung, wie ich das für die per attachMovie geladenen MC`s machen soll.

Für die hauptbuttons konnte ich das wie folgt in den onClipEvent(enterFrame) schreiben:
ActionScript:
  1. onClipEvent (load) {
  2.     b = 2   // Button-ID
  3.     targety = eval("b"+b+"_y");
  4. }
  5.  
  6. on (release) {
  7.     if(b == active) {
  8.         for (i=b;i<=j;i++) {
  9.             _root["b"+i].targety = eval("b"+i+"_y");
  10.         }
  11.         _global.active = 0;
  12.     } else {
  13.         for (i=active;i<b;i++) {
  14.             _root["b"+i].targety = eval("b"+i+"_y");
  15.         }
  16.         for (i=b;i<=j;i++) {
  17.             _root["b"+i].targety = eval("b"+b+"_y") - (eval("b"+b+"_subs") * sub_height) - (i-b) * main_height;
  18.         }
  19.         _global.active = b;
  20.     }
  21. }
  22.  
  23. onClipEvent (enterFrame) {
  24.     disty = targety-_y;
  25.     _y += disty/delay;
  26.  
  27.     if(active==1) {  
  28.         if(this._y == eval("b"+b+"_y") - (eval("b"+b+"_subs") * sub_height))  {
  29.             for(i=1;i<=eval("b"+b+"_subs");i++) {
  30.                 _root.attachMovie("sub_"+b+"_"+i,"sub"+b+i,i);
  31.                 _root["sub"+b+i]._x = 20;
  32.                 _root["sub"+b+i]._y = (eval("b"+b+"_y")+5) - (eval("b"+b+"_subs")*sub_height) + (i*sub_height);
  33.             }   
  34.         }
  35.     }
  36.  
  37. }

Aber wie mach ich das für die Submenübuttons??

Ich hoffe ich hab mein Problem einigermaßen erklären können, wenn nicht einfach nochmal fragen.

Vielen Dank

Oliver
stamina ist offline   Mit Zitat antworten
Alt 29-07-2005, 06:36   #2 (permalink)
tracer
 
Benutzerbild von andretti
 
Registriert seit: Jun 2004
Beiträge: 4.415
aloha!
Vorschlag Actionscript-Bewegungstween-Mix:
das Untermenü baust DU folgendermaßen:

die drei Links ordnest DU übereinander an, jeweils mit einem Rechteck(gruppieren!!!) über dem jeweiligen link; das rechteck hat die Farbe des Hintergrundes der Seite;somit sind die Untermenülinks nicht sichtbar, weil ja immer eine Fläche in Hintergrundfarbe drüber liegt;

dann packst DU die drei links in einen Movieclip;
innerhalb dieses Movieclips machst du für jeden Link einen tween für das Sliden nach unten;zwischen den tweens lässt du einen frame platz, da schreibst du rein:
ActionScript:
  1. var weiter = setInterval(function(){clearInterval(weiter);nextFrame();},500)
dann wird der nächste tween abgespielt.....bis zum letzten Link machst DU das so;in den letzten frame kommt ein
ActionScript:
  1. stop();
und bei klick auf den Link "Gästebuch" attacht DU das Untermenü UNTER("hinter") den link "Gästebuch", und der Untermenümovieclip wird attacht und startet mit den tweens; bei klick auf einen anderen tween könnte man den Bewegungstween wieder retour tweenen lassen;
__________________
Viola per Sempre
Alle Angaben ohne Gewehr!
trace your open mind in variables !
andretti
ActionScript Dictionary
andretti ist offline   Mit Zitat antworten
Alt 29-07-2005, 11:06   #3 (permalink)
Neuer User
 
Registriert seit: Sep 2001
Ort: Stuttgart
Beiträge: 29
Hallo andretti,

danke für den Vorschlag.
Ich glaube der hat leider einen Hacken (den du ja nicht wissen konntest :-) und zwar, dass der spätere Hintergrund nicht einheitlich ist, sondern transparent - sprich das menü soll auf ein Foto gelegt werden.

Ausserdem wollte ich das menü später dynamisch machen, so dass durch eine externe XML sowohl die Anzahl der Haupt-, als auch Untermenüpunkte und deren Grafiken bestimmt werden, und as sich das menü selbst aufbaut.

Desdeweschen braucht ich ne möglichkeit ein durch attachMovie geladenen MC mit Actionscript zu belegen, wie die Hauptbuttons.

Also noch eingfacher ausgedrückt:
Ich will ein MC per attachMovie laden und dann die y-Position sliden lassen wie im Beispiel -swf.
d.h. wie kann ich einen "onClipEvent" auf einem per attachMovie geladenen Mc nuztzen?

Hoffe mir kann jemand helfen...

Danke

Geändert von stamina (29-07-2005 um 11:41 Uhr)
stamina ist offline   Mit Zitat antworten
Alt 30-07-2005, 16:11   #4 (permalink)
tracer
 
Benutzerbild von andretti
 
Registriert seit: Jun 2004
Beiträge: 4.415
willst du jeden untermenüpunkt einzeln sliden lassen?
generell bedeutet das ja auch, dass hauptmenüpunkte, die unter dem hauptmenüpunkt mit untermenüpunkten liegen, auch nach unten sliden müssen, um platz(ausreichend...wie wird das berechnet?) zu machen....?
__________________
Viola per Sempre
Alle Angaben ohne Gewehr!
trace your open mind in variables !
andretti
ActionScript Dictionary
andretti ist offline   Mit Zitat antworten
Alt 31-07-2005, 09:01   #5 (permalink)
Neuer User
 
Registriert seit: Sep 2001
Ort: Stuttgart
Beiträge: 29
Hallo Andretti,

nochmal eine kurze Erklärung:
(anhand meines Beispiels -> Menü

  • Meine Hauptleiste besteht zur Zeit aus einem Frame. In diesem sind globalen Variablen für die Buttons definiert.
    Die Anzahl der Submenüpunkte, die Start-Position, die Höhe der Submenübottons, etc
    ActionScript:
    1. _global.j = 5// Anzahl Hauptbuttons
    2. _global.main_height = 30// Höhe eines Hauptbuttons
    3. _global.sub_height = 20; // Höhe einen Subbuttons
    4. _global.delay = 3; // Slied-Verzögerung
    5. _global.active = 0; // Activer Button beim ersten Aufruf
    6.  
    7. // Gästebuch
    8. _global.b1_y = 430; // Y-Position beim Ersten Aufruf
    9. _global.b1_subs = 2; // Anzahl Subbuttons
    10.  
    11. // Community
    12. _global.b2_y = 400
    13. ....
  • Dann haben ich in diesem ersten Hauptleistenframe auch alle HauptmenüButton-MC`s eingefügt.
    Jeder Button ist mit folgendem AS belegt:
    ActionScript:
    1. onClipEvent (load) {
    2.     b_id = 2    // Button-ID
    3.     targety = eval("b"+b+"_y");
    4. }
    5.  
    6. on (release) {
    7.         // es wird überprüft ob der angeklickte Button bereits "ausgefahren ist"
    8.         // b_id == active -> dieser Button ist ausgefahren
    9.     if (b_id == active) {
    10.                 // d.h. dieser Button UND alle darüber müssen wieder
    11.                 // auf Ihre Start-Y-Position sliden
    12.         for (i=b_id; i<=j; i++) {
    13.             _root["b"+i].targety = eval("b"+i+"_y");
    14.         }
    15.                 // nun ist kein Button mehr active, d.h. -> active = 0
    16.         _global.active = 0;
    17.     }
    18. // b_id != active -> dieser Button ist noch nicht ausgefahren
    19. else {
    20.                 // angeklickte Button ist nicht aktiv. Jedoch vielleicht ein anderer!
    21.                 // D.H. der active Button UND ALLE bis VOR dem angeklickten
    22.                // werden zurückgefahren
    23.         for (i=active; i<b_id; i++) {
    24.             _root["b"+i].targety = eval("b"+i+"_y");
    25.         }
    26.                 // gleichzeitig wird der angeklickte Button und alle darüber               
    27.                 // ausgefahren
    28.         for (i=b_id; i<=j; i++) {
    29.             _root["b"+i].targety = eval("b"+b_id+"_y")-(eval("b"+b_id+"_subs")*sub_height)-(i-b_id)*main_height;
    30.         }
    31.                 // active bekommt den wert des angeklickten, ausgefahrenen
    32.                 // Buttons
    33.         _global.active = b_id;
    34.     }
    35. }
    36.  
    37. onClipEvent (enterFrame) {
    38.     disty = targety-_y;
    39.     _y += disty/delay;
    40. }
  • Was ich jetzt machen will, ist dass die Submenübuttons geladen werden, wenn der angeklickte Button an seiner ausgefahrene position angekommen ist. Diese sollen dann unter dem hauptmenübutton nach unten in den "freigemachten Raum" hineinsliden.
    Jedoch weiss ich nicht, wie ich mit attachMovie geladen MC mit einem onClipEvent belge um oben gezeigts Script auch für die geladenen Buttons zu schreiben???

Hoffe mein Problem jetzt bestmöglich erklärt zu haben, und vielleicht einer von Euch "Cracks" eine Idee hat.
Kann ja nicht so schwer sein... denke ich

Gruss stamina
stamina ist offline   Mit Zitat antworten
Alt 14-08-2005, 01:56   #6 (permalink)
Der Flasher...:D
 
Benutzerbild von Bananchen
 
Registriert seit: May 2005
Beiträge: 58
Frage:

Wie wäre es ohne Sliden, aber die Sub-Buttons per Alpha einzublenden?
Aus der Hüfte würd ich sagen -> Wäre einfacher und auch ned unschön.
Bananchen ist offline   Mit Zitat antworten
Alt 14-08-2005, 18:38   #7 (permalink)
User
 
Benutzerbild von jeypack
 
Registriert seit: Sep 2003
Ort: Essen
Beiträge: 616
So z.B.:
ActionScript:
  1. onClipEvent (enterFrame) {
  2.     disty = targety-_y;
  3.     _y += disty/delay;
  4.     if (active == 1) {
  5.         if (this._y == eval("b"+b+"_y")-(eval("b"+b+"_subs")*sub_height)) {
  6.             for (i=1; i<=eval("b"+b+"_subs"); i++) {
  7.                 _root.attachMovie("sub_"+b+"_"+i, "sub"+b+i, i);
  8.                 _root["sub"+b+i]._x = 20;
  9.                 _root["sub"+b+i]._y = (eval("b"+b+"_y")+5)-(eval("b"+b+"_subs")*sub_height)+(i*sub_height);
  10.                 _root["sub"+b+i].b = b;
  11.                 _root["sub"+b+i].onRelease = function() {
  12.                     //
  13.                 };
  14.                 _root["sub"+b+i].onEnterFrame = function() {
  15.                     //
  16.                 };
  17.             }
  18.         }
  19.     }
  20. }
__________________
Gruß, Jey!
jeypack 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 14:19 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele