| |||||||
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: Oct 2005
Beiträge: 16
| menu problemchen
Hello! bin eine architekturstudentin und arbeite gerade an meinem online-portfolio; habe bereits das forum durchsucht nach einem ähnlichen problem aber leider keine lösung gefunden! vorweg aber sorry wenn die frage doof ist weil ich bin leider wirklich noch kein experte was actionscript angeht ich habe ein zweigliedriges menu: - hauptbuttons, wenn man diese anklickt, erscheinen unterbuttons in einem anderen bereich (als movieclips mit animationen) im großen und ganzen lässt sich das also eh als eine variation eines pulldown menus bewerkstelligen. das problem ist nun: - es bestehen mehrere hauptbuttons mit jeweils ihren eigenen unterbuttons - wenn ich einen hauptbutton anklicke, sollen die dazugehörigen unterbuttons so lange stehen bleiben, bis nicht ein anderer hauptbutton angeklickt wird - dann nämlich sollen dessen unterbuttons eingeblendet werden, und die des vorherigen ausgeblendet ich brauch also ne funktion, die folgendes veranlasst: wenn ein hauptbutton geklickt wird, schauen ob einer der anderen hauptbuttons expanded ist und falls ja, diesen dann in collapsed zu versetzen (mit fade-out)... ich hab jetzt einiges probieriert, ich denk zwar nicht dass das soooooooo schwer ist aber irgendwie schaff ich es wohl nicht, aus einem button die timelines der anderen zu targeten.. ich fänds stark wenn jemand nen tipp für mich hätte |
| | |
| | #2 (permalink) |
| :Void Registriert seit: Jun 2005 Ort: börlin
Beiträge: 931
|
hallo und welcome im forum! ich tät das so machen: du benutzt eine globale variable _global.activeMC (z.b.), welche du in der hauptzeitleiste definierst. wenn du nun auf einen button klickst, übergibst du dieser variablen den wert des buttons, also 'this'. (_global.activeMC = this). zuvor fürst du für diese referenz aber die fadeout-anweisung durch - bei jedem buttonclick ist ja dann eine referenz zum vorgänger gespeichert. jetzt hab ichs ein bisschen rückwärts beschrieben, so ungefähr könnte das aussehen: ActionScript:
gruß janosch |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Oct 2005
Beiträge: 16
|
hmmm erstmal besten dank für die antwort!! hab das jetzt versucht, aber schon beim deklarieren der variablen in der ersten ziel krieg ich nen syntax error :-/ hab in der flash help nachgeforscht, da steht: You cannot assign strict data types to variables that you create in the _global scope, because you have to use the var keyword when you assign a data type. so weit wie ich das da verstehe, geht gar nicht _global.variablename:datatype sondern nur _global.variablename = wert oder versteh ich da was falsch? sorry ich beschäftige mich seit ner woche ernsthaft mit flash ![]() gäbs denn eigentlich ne möglichkeit, sowas zu machen: am button selbst nen on release event handler machen der sagt: guckst du ob andere buttons auf expanded frame label, wenn ja fade out und setz auf collapsed? versuch das jetzt die ganze zeit aber irgendwie ist mein AS noch nicht so fließend und ich hab generell das problem aus einem button nen anderen zu targeten (müßte aber eh mit _root.buttonname gehen, oder?) ich stell mir das so vor (jetzt nur ne ganz einfache version mit zuklappen ohne fadeout): z.b. im button info: this.onRelease = function() { gotoAndStop("expanded"); // macht dieses menü auf _root.news_btn.gotoAndStop("collapsed"); // schließt das menü news, nur DAS funktioniert leider nicht... }; nochmal die kurzversion: ich hab ja in der szene verschiedene movieclips als buttons, die haben dann jeweils zwei frame labels "collapsed" und "expanded" und wenn einer expanded wird soll ein anderer sofern offen collapsen... danke! |
| | |
| | #4 (permalink) |
| :Void Registriert seit: Jun 2005 Ort: börlin
Beiträge: 931
|
hi, ja sorry, strictly typing geht natürlich nicht bei ner _global variablen - hab nicht aufgepasst. ist auch nicht wild, strict data typing braucht man auch nicht, also schreib einfach _globa.active = wert. dein problem ist, dass wenn du bei jedem onRelease allen anderen buttons sagen möchtest, zu collapsen, dass du dann eine fürchterliche menge code bekommst - und wenn du was ändern möchtest, musst du den code an allen stellen ändern. und um herauszubekommen, welcher button expanded ist, musst du ja alle abfragen. es sei denn, es ist bekannt, dass immer nur ein button expanded sein darf. dann kannst du das über oben angesprochene variable lösen, die eben genau den wert des zuletzt geklickten buttons bekommt. deinen überlegungen kann ich nicht ganz folgen, vielleicht einfach, weil ich es für unrealistisch halte, beim onRelease irgendeinen buton explicit anzusprechen, so wie du es mit _root.news_btn.gotoAndStop("collapsed") vorgeschlagen hast. davon würde ich dir entschieden abraten und dir wärmstens empfehlen, es mit der funktion zu versuchen! wenn du gerne auf buttons notierst (was in deinem beispiel durchaus sinnvoll zu sein scheint), versuch es doch so: ActionScript:
gruß janosch |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Oct 2005
Beiträge: 16
|
wooooow danke, jetzt versteh ich's, ist wirklich viel logischer so wie du es sagst!! ;-) funkt jetzt aufn ersten anhieb nicht ganz, er macht zwar den geklickten button expanded aber nicht den vorherigen collapsed :-p aber ich geb nicht so leicht auf |
| | |
| | #6 (permalink) |
| :Void Registriert seit: Jun 2005 Ort: börlin
Beiträge: 931
|
mit trace(_global.activeMC); kannst du im onRelease checken, ob überhaupt der richtige mc gespeichert wird, und dann kannst du mal prüfen, ob es denn in dem mc einen frame auf der timeline gibt, der 'collapsed' heißt - sonst auch mal mit der entsprechenden zahl versuchen. wichtig ist es jetzt, erst einmal einen button mit dieser methode zum kollabieren zu bringen, sonst bringt die automatisierung ja irgendwie nichts .ich hoffe es klappt. gruß janosch |
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Oct 2005
Beiträge: 16
|
ES FUNKTIONIERT!!! *jubel* dankeeee janosch! warst ne waaaaaaaahnsinns-hilfe!!! schick dir die tage den link von der seite, muss sie jetzt "nur" noch mit inhalt füllen hehe ![]() übrigens aus irgendeinem grund hats aufm button nicht funktioniert, aber wie ich den code in die hauptzeitleiste gestetzt hab und dann eben statt this die instance angesprochen hab, hats funktioniert ![]() danke nochmals, gruss lejla |
| | |
| | #9 (permalink) |
| Neuer User Registriert seit: Oct 2005
Beiträge: 16
|
oh noo ich hab mich zu früh gefreut!! das menu funktioniert zwar was das überblenden angeht, ABER die unterbuttons krieg ich nicht mehr dazu, was zu machen :-/ also so schauts aus (alles in frame 1 der hauptzeitleiste): _global.activeMC; news_mc.onRelease = function() { _global.activeMC.gotoAndStop("collapsed"); _global.activeMC = news_mc; news_mc.gotoAndStop("expanded"); }; // bis hierhin funktioniert es! news_mc.news1.onRelease = function() { _root.gotoAndStop(11); }; hier sollte jetzt der unterbutton 1 zum frame 11 der hauptzeitleiste vorgehen, aber er benimmt sich total eigenartig, ich hab das gefühl er springt zurück in seiner eigenen zeitleiste... :-/ p.s. ich hab auch versucht den letzten befehl direkt auf den button zu setzen aber das bewirkt auch nichts... Geändert von evian (29-10-2005 um 19:26 Uhr) |
| | |
| | #10 (permalink) |
| Neuer User Registriert seit: Oct 2005
Beiträge: 16
|
hab da jetzt was gefunden, es ist im endeffekt so ein menü nur eben auf einer flash seite und die unterbuttons öffnen einzelne frames auf der hauptzeitleiste... das einzig wichtige ist dass die unterbuttons als movie clips definiert sein müssen. http://www.bitethemango.com/nav/ weiß jemand wie man das am schnellsten hinbekommt? |
| | |
| | #11 (permalink) |
| Neuer User Registriert seit: Oct 2005
Beiträge: 16
|
// update in der hoffnung dass das einer liest gut ich hab jetzt aufm unterbutton-mc folgenden code und dieser funktioniert was das springen auf der hauptzeitleiste angeht: onClipEvent (load) { this.onMouseDown = function() { _root.gotoAndStop(11); }; } mein problem ist aber, dass der mc nur den _on zustand abspielt, nicht die _over und _down (hat vor dem ganzen script funktioniert, liegt also glaub ich kaum am mc sondern eher an der variablen (weiter oben nachzulesen)... die hauptbuttons (eigentlich normale buttons in dem mc eingebettet) haben auch ihren over und down zustand verloren Geändert von evian (29-10-2005 um 20:40 Uhr) |
| | |
| | #12 (permalink) |
| :Void Registriert seit: Jun 2005 Ort: börlin
Beiträge: 931
|
hm also ich weiß nicht so recht, ob ich noch ganz verstehe, was das eigentliche problem ist.... ich glaube, du müsstest uns deine unterbuttons mal zeigen - vielleicht einfach in einer version, die nur die buttons enthält und alles, was diese bewirken sollen. ich hab dir hier mal ein kleines beispiel gebastelt, welches zeigt, dass es viel sinnvoller sein kann, auf der hauptleiste nicht zu springen, sondern dafür unter-mc's zu benutzen. dafür habe ich hier einen screen_mc auf _root erstellt, welcher den eigentlichen inhalt hat. das menü und die "bühne" sind also ziemlich gleichberechtigt. unter-buttons gibt es jetzt nicht, aber vielleicht hilft dir das erstmal. gruß janosch |
| | |
| | #13 (permalink) |
| Neuer User Registriert seit: Oct 2005
Beiträge: 16
|
naja mein menü ist ja zweigliedrig... ich hab jetzt mal ein file nur mit dem menu in einer vereinfachten form gemacht! ich glaub die probleme sind dann eh ersichtlich ![]() ich bin dir wirklich riesig dankbar für die hilfe... auch wenn ich mich selbst schon als mühsam empfind |
| | |
| | #14 (permalink) |
| :Void Registriert seit: Jun 2005 Ort: börlin
Beiträge: 931
|
so, du hast ein problem . und zwar ein dickes.es nennt sich, oder es könnte sich nennen, "das allgemeine problem mit untergeordneten schaltflächen". und das problem mit diesen ist ein technisches, und ich bin fasziniert davon, dass es selbst hier im forum keine einschlagenden lösungen oder auswege dafür gibt. das problem ist, dass dein hauptbutton ein onRollOver-event-handler hat, welcher einen event auslöst, wenn man mit der maus über den button geht. wenn sich dann innerhalb des buttons weitere objekte zeigen, dann gehören diese trotzdem noch zu dem button, das rollover gilt also auch für sie - selbst wenn sie ihre eigenen rollOver-events haben! deswegen ist wurde, wenn man auf die unter-buttons gedrückt hat, der event der haupt-buttons ausgelöst. eine lösung bietet aus meiner sicht nur actionscript, und das ist leider nicht die einfachste, aber vielleicht kriege ich es ja verständlich hin. zuerst noch eine kleinigkeit: für deine unterbuttons hast du (wahrscheinlich um oben angesprochenes verhalten zu umgehen) mouseDown-events definiert. diese gelten aber generell für _root, auch wenn man sie einzelnen mc's gibt. ich habe sie jetzt durch onRelease's ersetzt. die lösung sieht wie folgt aus und findet in frame 1 auf der hauptzeitleiste _root statt. die idee ist die: wenn man auf einen hauptbutton klickt, soll alles geschehen wie bisher, nur dass jetzt auch noch dem hauptbutton sein onRelease-event-handler weggenommen wird. damit ist er kein button mehr! (bei dir ist er zwar schon noch ein button, weil er vom typ button ist, aber hat keine aktion mehr). damit können sich seine unterbuttons frei entfalten. wenn man nun aber auf den anderen button klickt, werden dessen aktionen gelöscht, der zuvor gedrückte button soll aber seine onRelease-aktionen aber wieder bekommen. und dazu können wir ja einfach die _global.active benutzen, die weiß nämlich welcher button zuletzt gedrückt wurde. und dazu benutzen wir jetzt eine funktion, die vielleicht etwas kompliziert ist, aber wie ich finde eine sehr gute und vor allem brauchbare lösung. ich kommentiere im script, wie sie funktioniert. ActionScript:
, ich beantworte gerne alles so gut ich kann - und ich lerne auch eine menge davon.vielleicht hilft es an dieser stelle, dieses script mit dem alten zu vergleichen, dann könnte einiges deutlicher werden. gruß janosch |
| | |
| | #15 (permalink) |
| Neuer User Registriert seit: Oct 2005
Beiträge: 16
|
woow! besten Dank!! das funktioniert ja wirklich ![]() ich schau mir das morgen genau an, aber so wie das bei Dir im File ist werde ich es wohl hinkriegen! ich dachte eigentlich dass das einfacher geht hehe darauf wär ich ja nie im leben allein gekommen =p ich meld mich gerne wenn ich noch fragen hab : ) und sonst komm ich angeben wenn ich fertig bin |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |