| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Feb 2002
Beiträge: 16
| Menü-Programmiering elegant?
Hallo alle zusammen, ich sitze hier seit geraumer Zeit und schuster mir ein Menü zusammen. Leider merke ich, dass, je weiter ich komme, desto unübersichtlicher wird das ganze. Und jetzt denke ich, es muss doch eine Möglichkeit geben, genau das, was ich vorhabe auch elegant Flash5-kompatibel umzusetzen. Momentan bewegt sich bei MouseOver alles so, wie ichs gern hätte. Im Endeffekt sollen natürlich bei Click die jeweiligen Unterpunkte stehen bleiben etc. Aber ich will grad gar nicht weitermachen, bevor ich nicht wenigstens einen neuen Ansatz oder Gedankengang im Kopf habe, wie ich diese Problem effektiver lösen könnte. Vielen Dank im Voraus Euch allen, Karsten |
| | |
| | #2 (permalink) |
| Farbe ist Luxus Registriert seit: May 2003 Ort: Köln
Beiträge: 2.405
|
hallo karsten. ja, funktinieren tuts prima, allerdings kann man da schon noch ein paar Dinge verändern, um es vor allem etwas flexibler zu gestalten (und nicht so performance-lastig). Deine einzelnen Menus sehen ja prinzipiell gleich aus, somit ließen sie sich auch gut skripten. Die Aufklapp-Funktion, die jetzt im onEnterFrame steht, kann genausogut in einen Frameloop, der nur dann aufgerufen wird, wenn er gebraucht wird (direkt im Button). Die onEnterFrames sind zwar momentan nicht sonderlich belastend fürs System, aber dafür, dass eigentlich gar nichts passiert, sind 2-4 Prozent System-Auslastung schon zu viel. Mach dir am besten ein Array für das HauptMenu. Für jeden dieser Array-Einträge erzeugst du weitere Arrays für die Untermenus. Erstellen kannst du dein Menu dann mittels duplicateMovieClip(); dafür brauchst du die Hauptstruktur deines Menus nur einmal auf der Bühne haben. Auch die Abfragen auf den einzelnen MCs kannst du prima mit vorher an den duplizierten MC übergebenen Variablen lösen. Schau vielleicht mal bei den Tutorials nach Menus, da müsste sich einiges finden, was dir ggf. weiterhilft. Grüße Sascha
__________________ 12:15, press return |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Feb 2002
Beiträge: 16
|
Hallo Sascha, vielen Dank für die Tipps... ich hab mich mal daran versucht... was mir fehlt ist grad immer noch der logische Ansatz der Filmstruktur. Ich weiss nicht recht, wie ich die Movieclips und Buttons bauen und verschachteln muss, damit das so funktioniert wie es soll. Wo setz ich den Frameloop? oh, oh... hab das Gefühl, mein Hirn scheut heute alles über Normalnull ![]() Und: die Navigation soll nachher HTML-Dateien in nem anderen Frame und einen Movieclip in der Navigation an sich steuern... kann ich sowas einfach dynamisch übergeben? Wie würdest Du das Menü-Array aufbauen? Nur ein mehrdimensionales? Gibts in Actionsscript sowas schönes wie "foreach" in php? Vielen Dank! Karsten |
| | |
| | #4 (permalink) |
| Klugscheisser Registriert seit: Jun 2001 Ort: Düsseldorf
Beiträge: 1.354
|
Es gibt in Flash5 keine echten mehrdimensionalen Arrays und foreach gibt´s auch nicht, nicht mal Array.walk Das Einzige, was geht ist, dass Du den Inhalt von Arrayelementen aus anderen Arrays definierst, also variable = new Array(x,y,z); topArray = new Array(); topArray[1] = variable; Geändert von T.Decay (22-07-2003 um 14:08 Uhr) |
| | |
| | #5 (permalink) |
| Farbe ist Luxus Registriert seit: May 2003 Ort: Köln
Beiträge: 2.405
|
Hallo, @T.Decay: was meinst du denn mit "echten" mehrdimensionalen Arrays? Du kannst deine Arrays wie folgt aufbauen: ActionScript:
Das for(i in ar) entspricht in etwa dem foreach. Das geht natürlich genauso mit dem "normalen" for(i=0;i<ar.length;i++)... Grüße Sascha
__________________ 12:15, press return |
| | |
| | #6 (permalink) |
| Klugscheisser Registriert seit: Jun 2001 Ort: Düsseldorf
Beiträge: 1.354
|
for in und for gibt´s auch in php aber eben auch foreach und mit den "echten" Arrays meine ich, dass Du für eine Anwendung auf jedes Element einzeln, wie Du das gerade vorgeführt hast, vorher wissen musst, aus wie vielen Dimensionen dein Array besteht, weil ja jede davon ihre eigene for-Schleife braucht. Man könnte jetzt noch Abfragen reinklotzen, ob da jeweils ein Array drunterliegt, was aber wiederum nur geht, wenn man absehen kann, wie jenes Array ggf. heissen würde. Es ist nach meinem bisherigen Horizont nicht möglich, ein Array.walk zu simulieren, und auch wenn man verschachtelte for-Schleifen als ausreichend befindet, ist es eben immer noch simuliert und nicht "echt". Ist aber in diesem Fall schon ein bisschen Haarspalterei, das gebe ich zu ![]() Edit: Geht auch noch schlanker: ActionScript:
![]() [edit2]join(); trace(); ...usw. funktionieren allerdings tatsächlich wie bei "Echten"[/edit2] Geändert von T.Decay (22-07-2003 um 14:52 Uhr) |
| | |
| | #7 (permalink) |
| Farbe ist Luxus Registriert seit: May 2003 Ort: Köln
Beiträge: 2.405
|
H, prinzipiell ginge es mit einer Rekursion, in der der Typ des Parameters abgefragt wird. Es lässt sich zwar nicht "array" als Typ differenzieren, aber "object" sollte hier reichen: ActionScript:
Hierbei ist es egal, wie tief deine Arrays sind. Aber nochmal zurück zum eigentlich Problem: um erstmal ein bisschen Struktur in die Sache zu bekommen, ist es egal, ob jeder beliebige Baum damit abbildbar ist. Fang erstmal mit zweidimensionalen Strukturen an, falls nötig kann man es danach auch noch erweitern. Grüße Sascha PS: ob die Ausgabe so 100-Pro ist, weiß ich auch nicht, prinzipiell gehts aber
__________________ 12:15, press return |
| | |
| | #8 (permalink) |
| Neuer User Registriert seit: Feb 2002
Beiträge: 16
|
Hallo Ihr alle, vielen Dank schonmal für die Hilfe. Ich hab das jetzt mal umgebaut und dupliziere jetzt den MainButton MC folgendermassen: ActionScript:
Das funktioniert auch soweit alles. Die Bewegungsfunktionen hab ich aus den onEnterFrames rausgenommen und in zwei Frameloops geschrieben. Auch das geht wunderbar. Jetzt aber Folgendes (Ich glaube, man mekt, dass ich schon seit nem guten Jahr nix mehr in Flash gemacht hab...): Wie kann ich in den duplizierten MCs direkt ne Variable setzen? Sinngemäß in der Art: ActionScript:
Das geht natürlicht nicht, aber ich hoffe, Ihr versteht, was ich meine ![]() Vielen Dank nochmal, Karsten |
| | |
| | #11 (permalink) |
| Neuer User Registriert seit: Feb 2002
Beiträge: 16
|
Danke! damit bin ich schon wieder ein wenig weiter gekommen... Jetzt häng ich aber noch an was: Folgendes sollte eigentlich mein Menü auf den Bildschirm zaubern: ActionScript:
bzw. momentan nur die traces ausgeben.. Seltsamerweise gibt o.g. Script die hier aus: ActionScript:
also, als ober er die "zweite Array-Ebene" gar nicht also Array, sondern als stinknormalen String wahrnimmt... Denkfehler meinerseits? Wahrscheinlich... Könnt Ihr mir hier nochmal nen Tipp in die richtige Richtung geben? Vielen Dank, Karsten Geändert von derkarsten (23-07-2003 um 12:52 Uhr) |
| | |
| | #12 (permalink) |
| Neuer User Registriert seit: Feb 2002
Beiträge: 16
|
OK, OK. Aehm.. das war wohl nicht ganz so dramatisch... wenn ich submenu[i][j] schreibe, gehts schon (ist trotzdem n komisches Konstrukt in Flash dan... normalerweise hätte er doch dann vorher "object" ausgeben müssen, oder?). Trotzdem: anderes Problem: Wenn ich das ganze jetzt laufen lasse, produziert er leider nur Müll: ActionScript:
Jetzt positioniert er nur drei Movieclips auf der Bühne.. an relativ wirren Positionen... kann ich mir logisch grad nicht erklären.. ich häng zusätzlich nochmal das aktuelle .fla und .swf File an... vielleicht hat ja jemand von Euch nochmal kurz Zeit, sich das anzuschauen... Vielen Dank! Karsten |
| | |
| | #13 (permalink) |
| Neuer User Registriert seit: Feb 2002
Beiträge: 16
|
Hmm.. ich hab jetzt noch eine Weile rumprobiert... aber leider immer noch keine Lösung gefunden. Sobald ich die "innere" for-Schleife, oder besser gesagt den duplicateMovieClip in der for-Schleife auskommentiere funktioniert zumindest das mit den mainButtons wieder wunderbar. Was mach ich falsch |
| | |
| | #14 (permalink) |
| Farbe ist Luxus Registriert seit: May 2003 Ort: Köln
Beiträge: 2.405
|
Hi, in beiden Schleifen hast du einen Zähler, dessen Wert beim duplidateMovie() als Tiefe dient. Da beide Zähler sich zumindest stellenweise überschneiden, löschst du mit der zweiten Schleife die Movies aus der ersten Schleife... Setz also einfach in der zweiten die Tiefe auf j+menu.length Grüße Sascha
__________________ 12:15, press return |
| | |
| | #15 (permalink) |
| Neuer User Registriert seit: Feb 2002
Beiträge: 16
|
hmm... das mit der Tiefengeschichte war n guter Tipp... Jetzt wird zumindest wieder munter dupliziert... Allerdings seh ich nur zwei subButton-mcs, von denen nur einer korrekt ne Variable übergeben bekommt. wenn ich mal proforma die ganzen subButton-mcs in nem onClipEvent(enterFrame) ihre jeweilige _x-Koordinate ausgeben lasse, kommt nur was von MC submenu3_3 zurück. also quasi: ActionScript:
ergibt ActionScript:
daraus folgere ich mal, dass nur der subButton3_3 MC korrekt dupliziert wird... was ist denn da nu schon wieder los? oh mann... sorry, dass ich Euch so nerve... Aber irgendwie ist das echt n seltsames Problem |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |