Zurück   Flashforum > Flash > Stuff

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 02-08-2004, 07:01   #1 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
[STUFF] Einstieg - kleines dyn. Menü ;-)

Hi!

habe nen kleines dyn. Menü gebastelt - gab es bestimmt schon in dieser Form, aber ich hatte halt lust eins zu basteln!!!

Das Menü dient nur zur veranschaulichung, wie man so etwas angehen könnte, nicht aber um es sofort zu verwenden!
Dazu ist noch etwas Eigenliestung erforderlich!
Wenn es Fragen gibt dann fragt einfach.. dann versuche ich soweit ich kann zu helfen.

kurze Erklärung:
Das Menü bedient sich eines zweidimensionalen Arrays um Menü elemente zu erstellen.
Dieses und andere Vaiablen müssen gesetzt werden!
Ich denke da spricht aber alles für sich (einfach mal in den anfang des codes gucken)!

Die Menülinks sollten für die richtige Darstellung alle eine Ausrichtung mit x= 0 und y=0 haben.
Dazu müssen/sollten diese Menülink-Objekte ein dynamsiches Textfeld beinhalten mit dem Instanznamen "lanz" (damit ein Menüpunkt-name auch angezeigt wird...)
Diese Objekte müssen zudem in der Bibiliothek vorhanden sein und eine Verknüpfung zum AS haben (in der Bibo aufs Obj. rechts-klicken>"Verknüpfung">"Export für ActionScript" und "Export in erstes Bild" müssen makiert sein.)
Der verknüpfungsname muss im code angegeben werden!

Das ein oder andere "_root" im Script ist mit Sicherheit überflüssig, dient aber zur genaueren Erkennung der Pfade vorallem für Einsteiger!

Das Script funktioniert nur wenn es auf _root ausgeführt wird!

ich hoffe, dass ich nichts vergessen habe!!!

ActionScript:
  1. mainLinks = new Array(["main1", "sub1", "sub2", "sub3", "sub4", "sub5"],
  2.                       ["main2", "sub1"],
  3.                       ["main3", "sub1", "sub2", "sub3"]);
  4. mainverknuepfung = "mainLink";
  5. subverknuepfung = "subLink";
  6. posx = 100;
  7. posy = 50;
  8. abstand = 5;
  9. sub_verschiebung = 30;
  10.  
  11.  
  12. _root.ausgefahren = false;
  13. function ausfahren(abnr) {
  14.     if (!_root.ausgefahren) {
  15.         _root.curr = abnr;
  16.         for (j=1; j<_root.mainLinks[abnr].length; j++) {
  17.             _root.attachMovie(subverknuepfung, _root.mainLinks[abnr][j], (abnr+1)*j+50);
  18.             _root[_root.mainLinks[abnr][j]]._x = posx+sub_verschiebung;
  19.             _root[_root.mainLinks[abnr][j]]._y = _root[_root.mainLinks[abnr][0]]._y+_root[_root.mainLinks[abnr][0]]._height+(j-1)*(_root[_root.mainLinks[abnr][1]]._height+abstand)+abstand;
  20.             _root[_root.mainLinks[abnr][j]].lanz.text = _root.mainLinks[abnr][j];
  21.             _root[_root.mainLinks[abnr][j]].onRelease = function () {
  22.                 trace(this+" wurde geklickt");
  23.             }
  24.         }
  25.         for (var ii = abnr+1; ii<_root.mainLinks.length; ii++) {
  26.             _root[_root.mainLinks[ii][0]]._y += (_root.mainLinks[abnr].length-1)*(_root[_root.mainLinks[abnr][1]]._height+abstand)+abstand*2;
  27.         }
  28.         _root.ausgefahren = true;
  29.     } else {
  30.         if (abnr == _root.curr) {
  31.             einfahren(_root.curr);
  32.         } else {
  33.             einfahren(_root.curr);
  34.             _root.curr = abnr;
  35.             ausfahren(_root.curr);
  36.         }
  37.     }
  38. }
  39. function einfahren(abnre) {
  40.     for (var ii = abnre+1; ii<_root.mainLinks.length; ii++) {
  41.         _root[_root.mainLinks[ii][0]]._y -= (_root.mainLinks[abnre].length-1)*(_root[_root.mainLinks[abnre][1]]._height+abstand)+abstand*2;
  42.     }
  43.     for (j=1; j<_root.mainLinks[abnre].length; j++) {
  44.         _root[_root.mainLinks[abnre][j]].removeMovieClip();
  45.     }
  46.     _root.ausgefahren = false;
  47. }
  48.  
  49. for (var i=0; i<mainLinks.length; i++) {
  50.     name = mainLinks[i][0];
  51.     _root.attachMovie(mainverknuepfung, name, i);
  52.     _root[name]._x = posx;
  53.     _root[name]._y = i*(_root[name]._height+abstand)+posy;
  54.     _root[name].lanz.text = name;
  55.     _root[name].nr = i;
  56.     _root[name].onRelease = function () {
  57.         trace(this+" wurde geklickt");
  58.         ausfahren(this.nr);
  59.     }
  60. }

viel Spaß damit!

vielleicht sieht man ja mal Ergebnisse, was so draus geworden ist!?

mfG,
Robert

P.s: konstruktive Kritik ist natürlich erwünscht!
Angehängte Dateien
Dateityp: zip dyn_menu_einstieg.zip (3,1 KB, 679x aufgerufen)
Dateityp: rar dyn_menu_einstieg.rar (2,7 KB, 341x aufgerufen)

Geändert von pape (02-08-2004 um 07:09 Uhr)
pape ist offline   Mit Zitat antworten
Alt 04-08-2004, 01:52   #2 (permalink)
Ich wars nicht! :)
 
Registriert seit: Apr 2004
Beiträge: 333
Hallo,
das Script ist genau das richtige für mich Nur eine frage hätte ich wie muss ich das Script ändern wenn ich den buttons namen von btn_1 .... btn_8 gegeben habe? Überleg schon die ganze zeit Die untergeordneten Button heißen dann z.B. btn_3a .... btn_3c u.s.w! Kannst du mir bitte helfen?
pLaN58 ist offline   Mit Zitat antworten
Alt 05-08-2004, 13:21   #3 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Ort: göttingen
Beiträge: 80
Thumbs up

sehr schön
sowas in der Art musst ich eh noch machen nun hab ich das geschenkt bekommen

THX !
__________________
kein plan, aber das wird sich jetzt ja ändern
huegenbegger ist offline   Mit Zitat antworten
Alt 05-08-2004, 13:34   #4 (permalink)
learn about
 
Benutzerbild von wasi1
 
Registriert seit: Oct 2003
Ort: Weingarten \ South Germany
Beiträge: 1.205
Thumbs up

Super pape daumen hoch.

Und wenn du das noch optimieren willst, dann wäre es toll
wenn das menue langsam ausfährt.
__________________
MFG Wasi...

Aus dem Süden...

Immer mit dabei und so weiter...
__________________

[Der Store!] [Der Coole!]
wasi1 ist offline   Mit Zitat antworten
Alt 05-08-2004, 15:37   #5 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
Zitat:
Zitat von pLaN58
Hallo,
das Script ist genau das richtige für mich Nur eine frage hätte ich wie muss ich das Script ändern wenn ich den buttons namen von btn_1 .... btn_8 gegeben habe? Überleg schon die ganze zeit Die untergeordneten Button heißen dann z.B. btn_3a .... btn_3c u.s.w! Kannst du mir bitte helfen?
Hi!

Das Menü funktioniert im Moment so, dass es einen "GrundButton" gibt, in den per AS der Name eingefügt wird!
Wenn du 6 verschiedene Buttons hast musst du es in dieser Art machen:

DU legst alle Buttons in die Bibiliothek und Verknüpst sie (wie oben scon beschrieben) und änderst die attach zeilen in :
ActionScript:
  1. //bsp. für die main buttons
  2. _root.attachMovie("btn_"+i, name, i);

bei den subbuttons is nen bisl mehr arbeit gefragt, da du dort zunächst auslesen musst, zu welchem main-button diese gehöen (z.b. btn_1c gehört zur Gruppe btn_1)

habe nur sehr wenig zeit grade und kann dir deshalb nicht sofort weier helfen , .. vielleicht heute abend oder sonst die tage halt!

@huegenbegger:

@wasi1: Jo! hatte ich auch vielleich vor, nur habe ich im Moment nur total wenig Zeit zum flashen, weil ich mit meiner Band sehr beschäftigt bin, aber die Tage gucke ich mir des mal an

Gruß
Robert
pape ist offline   Mit Zitat antworten
Alt 05-08-2004, 16:42   #6 (permalink)
Ich wars nicht! :)
 
Registriert seit: Apr 2004
Beiträge: 333
OK thx @pape! Werd ich mal ausprobieren *g* Hab nämlich schon eine andere lösung gefundn aba deine is stylischer als meine Hättest du ein Tut wo ich so eine bildlaufe leist aka yugop zaubern kann?
pLaN58 ist offline   Mit Zitat antworten
Alt 05-08-2004, 19:28   #7 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
gg
such mal bitte nach "yugop " da findest du auf jeden Fall extrem viel!
pape ist offline   Mit Zitat antworten
Alt 05-08-2004, 20:53   #8 (permalink)
Ich wars nicht! :)
 
Registriert seit: Apr 2004
Beiträge: 333
OK thxle

Yo werd ich mal machen! PZ
pLaN58 ist offline   Mit Zitat antworten
Alt 09-08-2004, 02:33   #9 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
huii... 44x die datei runtrgeladen...

und warum dann so wenig feedback?
schade!

hatte doch extra geschrieben
Zitat:
Zitat von pape
P.s: konstruktive Kritik ist natürlich erwünscht!
naja...

grz,
Robert
pape ist offline   Mit Zitat antworten
Alt 10-08-2004, 10:55   #10 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 16
Hi habe schon einiges von deiner arbeit hier im Flashforum gesehen bin sehr begeistert, lese derzeit einige Bücher über AS und Flash alles sehr interessant.

Nun habe ich aber mal ne kleine Frage zu dem kleinen Menü was du gebaut hast.

Und zwar hab ich es designtechnisch angepasst nun frag ich mich nur wo um himmelswillen ich die anweisungen für die Buttons geben kann, würde gerne auf klick eine swf datei laden lassen.

MFG Sven
svenkrause ist offline   Mit Zitat antworten
Alt 10-08-2004, 11:11   #11 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
hi!

jeweils da wo die onRelease ereignisse zugewiesen werden!

ActionScript:
  1. //Sub-menüpunkt
  2. _root[_root.mainLinks[abnr][j]].onRelease = function () {
  3.     trace(this+" wurde geklickt");
  4. }
  5. //Main-menüpunkt
  6.     _root[name].onRelease = function () {
  7.         trace(this+" wurde geklickt");
  8.         ausfahren(this.nr);
  9.     }

da du jetzt natürlich nicht mit this ein movie laden kannst, würde ich empfehlen parallel zum menü array (mainLinks) ein 2. array (z.b. urls oder files) anzulegen! (natürlich passend zu den menülinks!)

dann kannst du einfach vor dem release ereigniss jedem mc noch eine var mitgeben , welche die position der passenden url im array enthält und beim release ereigniss soll halt diese file ausgelesen werden und dann per loadmovie geladen werden...

hört sich kompliziert an ist es aber nicht:

ActionScript:
  1. mainLinks = new Array(["main1", "sub1", "sub2", "sub3", "sub4", "sub5"],
  2.                       ["main2", "sub1", "sub"],
  3.                       ["main3", "sub1", "sub2", "sub3"]);
  4. //--das array--//
  5. Files = new Array (["main1.swf", "m1sub1.swf", "m1sub2.swf", "m1sub3.swf", "m1sub4.swf", "m1sub5.swf"],
  6.                       ["main2.swf", "m2sub1.swf", "m2sub2.swf"],
  7.                       ["main3.swf", "mrsub1.swf", "m3sub2.swf", "m3sub3.swf"]);
  8. mainverknuepfung = "mainLink";
  9. subverknuepfung = "subLink";
  10. posx = 100;
  11. posy = 50;
  12. abstand = 5;
  13. sub_verschiebung = 30;
  14.  
  15.  
  16. _root.ausgefahren = false;
  17. function ausfahren(abnr) {
  18.     if (!_root.ausgefahren) {
  19.         _root.curr = abnr;
  20.         for (j=1; j<_root.mainLinks[abnr].length; j++) {
  21.             _root.attachMovie(subverknuepfung, _root.mainLinks[abnr][j], (abnr+1)*j+50);
  22.             _root[_root.mainLinks[abnr][j]]._x = posx+sub_verschiebung;
  23.             _root[_root.mainLinks[abnr][j]]._y = _root[_root.mainLinks[abnr][0]]._y+_root[_root.mainLinks[abnr][0]]._height+(j-1)*(_root[_root.mainLinks[abnr][1]]._height+abstand)+abstand;
  24.             _root[_root.mainLinks[abnr][j]].lanz.text = _root.mainLinks[abnr][j];
  25.             _root[_root.mainLinks[abnr][j]].file = _root.Files[abnr][j];//<--hier
  26.             _root[_root.mainLinks[abnr][j]].onRelease = function () {
  27.                 trace(this+" wurde geklickt"+", zuladene file: "+this.file);//<--hier
  28.             }
  29.         }
  30.         for (var ii = abnr+1; ii<_root.mainLinks.length; ii++) {
  31.             _root[_root.mainLinks[ii][0]]._y += (_root.mainLinks[abnr].length-1)*(_root[_root.mainLinks[abnr][1]]._height+abstand)+abstand*2;
  32.         }
  33.         _root.ausgefahren = true;
  34.     } else {
  35.         if (abnr == _root.curr) {
  36.             einfahren(_root.curr);
  37.         } else {
  38.             einfahren(_root.curr);
  39.             _root.curr = abnr;
  40.             ausfahren(_root.curr);
  41.         }
  42.     }
  43. }
  44. function einfahren(abnre) {
  45.     for (var ii = abnre+1; ii<_root.mainLinks.length; ii++) {
  46.         _root[_root.mainLinks[ii][0]]._y -= (_root.mainLinks[abnre].length-1)*(_root[_root.mainLinks[abnre][1]]._height+abstand)+abstand*2;
  47.     }
  48.     for (j=1; j<_root.mainLinks[abnre].length; j++) {
  49.         _root[_root.mainLinks[abnre][j]].removeMovieClip();
  50.     }
  51.     _root.ausgefahren = false;
  52. }
  53.  
  54. for (var i=0; i<mainLinks.length; i++) {
  55.     name = mainLinks[i][0];
  56.     _root.attachMovie(mainverknuepfung, name, i);
  57.     _root[name]._x = posx;
  58.     _root[name]._y = i*(_root[name]._height+abstand)+posy;
  59.     _root[name].lanz.text = name;
  60.     _root[name].nr = i;
  61.     _root[name].file = _root.Files[i][0];//<--hier
  62.     _root[name].onRelease = function () {
  63.         trace(this+" wurde geklickt"+", zuladene file: "+this.file);//<-- und hier
  64.         ausfahren(this.nr);
  65.     }
  66. }
und halt jeweils statt dem trace nen
ActionScript:
  1. deincontainer.loadMovie(this.file);


grz
Robert

edit: kommentare

Geändert von pape (10-08-2004 um 11:15 Uhr)
pape ist offline   Mit Zitat antworten
Alt 10-08-2004, 14:34   #12 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 16
Hi danke für die feine antwort, habe nun alles umgemoddelt leeren container erstellt, nur leider will er mir die swf's nicht in den mc laden, weiß nicht warum Hab dir mal die FLA drangehängt, wäre gut wenn du mal danach schauen könntest.

MFG

Sven
Angehängte Dateien
Dateityp: zip navigation-10.0.04.fla.zip (3,9 KB, 117x aufgerufen)
svenkrause ist offline   Mit Zitat antworten
Alt 10-08-2004, 16:34   #13 (permalink)
learn about
 
Benutzerbild von wasi1
 
Registriert seit: Oct 2003
Ort: Weingarten \ South Germany
Beiträge: 1.205
So auf den ersten blick wie ich das sehe fehlt der Instanzname des MC's
__________________
MFG Wasi...

Aus dem Süden...

Immer mit dabei und so weiter...
__________________

[Der Store!] [Der Coole!]
wasi1 ist offline   Mit Zitat antworten
Alt 10-08-2004, 16:42   #14 (permalink)
learn about
 
Benutzerbild von wasi1
 
Registriert seit: Oct 2003
Ort: Weingarten \ South Germany
Beiträge: 1.205
Und, wie sieht's aus?

Nur den Leeren mc anklicken unter Eigenschaften den Instanznamen leer_mc
eingeben und los kann's gehen.
__________________
MFG Wasi...

Aus dem Süden...

Immer mit dabei und so weiter...
__________________

[Der Store!] [Der Coole!]
wasi1 ist offline   Mit Zitat antworten
Alt 10-08-2004, 17:20   #15 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
du hattest den leer_mc (1) nicht mit einem instanznamen versehen (wie schon gesagt wurde) und (2) hast du leer_mc und die weiße fläche auf einer ebene!
leg diese mal eine ebene unter den leer_mc bzw. den leer_mc eine drüber!

du könntest auch den leer_mc löschen und im script am anfang diesen einfach per as erstellen:
ActionScript:
  1. //...
  2. sub_verschiebung = 0;
  3.  
  4. _root.createEmptyMovieClip("leer_mc",100000);//hier leer_mc erstellen
  5. leer_mc._x = 110;//<--hier xposition des mcs zuweisen
  6. leer_mc._y = 70;//<--hier yposition des mcs zuweisen
  7.  
  8. _root.ausgefahren = false;
  9. function ausfahren(abnr) {
  10. //...
  11.  
grz
Robert
pape 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 19:23 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele