Ach kommt schon, ohne eure Hilfe komme ich nicht weiter.Die Wissenden unter euch sollen mir ja nicht den Code ändern, sondern nur kurz erklären, wie das zu handhaben ist.
Hallo,
ich hätte mal eine Frage zu absoluten und relativen Zielpfaden.
Ich möchte ein Untermenü machen, bei dem der momentan aktive Button angezeigt werden soll.
Bei der Navigation im Hauptmenü klappt der untrige Code ganz gut.
Wie ändere ich dies aber z.B. um, wenn mein MC mit den Buttons eine Ebene drunter liegt.Code:// RollOver-funktion function buttonOver() { trace(this + " RollOver"); this.gotoAndStop(2); } // RollOut-funktion function buttonOut() { trace(this + " RollOut"); // Ist dieser Button aktiv?? if (_root.aktiv != this) { //wenn nicht aktiv -> this.gotoAndStop(1); } } // buttonbefehle ->> _root.but1.onRollOver = buttonOver; _root.but1.onRollOut = buttonOut; _root.but1.onRelease = function() { trace(this + " Release"); if (_root.aktiv != this) { //ist dieser button nicht aktiv, wird der jetzt aktive button auf nicht aktiv gesetzt _root.aktiv.gotoAndStop(1); //und dieser auf aktiv _root.aktiv = this; } };
_root => biography => but1
Wo muss ich überall diesen "biography"-Pfad angeben?
Bei den Buttons muss das ja so aussehen.
Aber was ist z.B. mitCode:_root.biography.but1.onRollOver = buttonOver; _root.biography.but1.onRollOut = buttonOut;oderCode:this.gotoAndStop(2)Muss ich da auch was ändern? Verstehe das noch nicht so ganz und wäre dankbar, wenn mir jemand helfen könnte, so dass ich in Zukunft besser darüber Bescheid weiss. Und was ist überhaupt der Unterschied zwischen relativen und absoluten Pfaden?Code:root.aktiv != this
P.S. Für viele von euch ist das sicherlich eine typische Anfängerfrage, aber wie heisst so schön, 'Aller Anfang ist schwer'.![]()
Geändert von bttrfly (14.10.2007 um 03:19 Uhr)
Ach kommt schon, ohne eure Hilfe komme ich nicht weiter.Die Wissenden unter euch sollen mir ja nicht den Code ändern, sondern nur kurz erklären, wie das zu handhaben ist.
Wenn Du es ausprobieren würdest, dann wüsstest Du doch schon ob es klappt, also ob es richtig oder falsch war.
Try and Error...
Absolute Pfade sind eben absolut, also immer festgelegt. Somit kannst Du den Code eben nicht einfach ohne Änderungen woanders einfügen.
Relative Pfade lassen sich dagegen schön auch bei anderen Verschachtelungen einfügen und funktionieren immer noch.
z.B. kannst DU schreiben:
mc.onRelease=function(){ trace(this._name)};
dann sagt er Dir immer den Namen, von dem aus die Funktion aufgerufen wurde.
mc.onRelease=function(){ trace(_root.mc._name)};
gibt Dir das selbe aus, aber nur, wenn "mc" auch genau diesen Pfad hat.
Danke für deine Antwort epiK. Eigentlich hatte ich es vorher schon ausprobiert, war aber nicht wirklich erfolgreich mit meinen Tests, da ich nicht wusste, wie ich damit umgehen sollte. Ich glaube, dass ich das nun verstanden habe.
Also bei absoluten Zielpfaden werden Funktionen von der obersten "Ebene" aus angesprochen, d.h. dass man die genauen Pfade bis zu den "Unterebenen" angeben muss. Aus diesem Grund kann man sie auch nicht beliebig überall einsetzen, weil alles schon fest ist.
Bei relativen Zielpfaden jedoch kann man Funktionen einer beliebigen "Unterebene" ansprechen, ohne dabei den ganzen Pfad von oben angeben zu müssen. Dieses "this" bezieht sich dann nur darauf.
Stimmt doch oder?
Jetzt habe ich den oberen Code mal etwas umgeändert. Die Rollover- und aktiv-Funktionen scheinen nun gut zu funktionieren, jedoch wird beim Anklicken eines anderes Buttons der vorher aktive nicht deaktiviert. Kann es sein, dass etwas im rot markierten Bereich nicht stimmt?
Code:// RollOver-funktion function buttonOver() { trace(this + " RollOver"); this.gotoAndStop(2); } // RollOut-funktion function buttonOut() { trace(this + " RollOut"); // Ist dieser Button aktiv?? if (this.aktiv != this) { //wenn nicht aktiv -> this.gotoAndStop(1); } } // buttonbefehle ->> this.but1.onRollOver = buttonOver; this.but1.onRollOut = buttonOut; this.but1.onRelease = function() { trace(this + " Release"); if (this.aktiv != this) { //ist dieser button nicht aktiv, wird der jetzt aktive button auf nicht aktiv gesetzt this.aktiv.gotoAndStop(1); //und dieser auf aktiv this.aktiv = this; } };
Hallo,
dein Fehler liegt hier:
this.aktiv = this. da erstellst du eine Variable in dem mc, ungefähr steht folgendes da: _level0.deinBT.aktiv mit this fragst du innerhalb deines Buttons ab ob aktiv gesetzt wurde.
Gucke dir mal dieses Beispiel an, das macht genau das was du willst
klick
Gruß
Wanderratte
Gebildet ist,
wer weiß,
wo er findet,
was er nicht weiß.
4bugs
Home
Amazon Wunschzettel
Hallo,
das ist mir jetzt etwas peinlich, dass ich das trotz mehrerer Suchen nicht selber gefunden habe.![]()
Wie du auch sagtest, ist das eigentlich genau das, was ich wollte. Hab vieelen Dank dafür. Ich hab das jetzt mal an meins angepasst und es funktioniert perfekt.
Jetzt würde mich aber dennoch interessieren, wie ich das denn im Oberen richtig machen kann? Man will ja schließlich auch was lernen.
Wenn die Buttons auf der obersten Ebene sind klappt es hiermit gut:Wenn sie jedoch wie bei mir auf einer weiter unten liegenden Ebene sind und ich z.B. so wie oben einen absoluten Pfad angeben will, müsste es doch hiermit funktionieren:Code:(_root.aktiv != this)Und das wiederum ist doch bei einem relativen Pfad dasselbe wie:Code:(_root.biography.aktiv != this)Oder bringe ich da etwas völlig durcheinander?Code:(this.aktiv != this)
Nein, ist nicht dasselbe:
Wenn du this nimmst, kriegst du immer den relativen Pfad zu deinem Button.
Wenn du jetzt schreibst, this.aktiv legst du für jeden Button eine variable aktiv an:
_level0.bt1.aktiv
_level0.bt2.aktiv usw
deswegen funktioniert dein Script nicht, also musst du eine neutrale Variable nehmen oder eine Variable in einem MC deklarieren und sie immer abfragen:
_level0.bt1.aktiv = this
ist ein bissel schwer zu Erklären![]()
Gruß
Wanderratte
Gebildet ist,
wer weiß,
wo er findet,
was er nicht weiß.
4bugs
Home
Amazon Wunschzettel
Hmm, ich denke, dass ich das nun nach mehrmaligem Durchlesen einigermaßen verstanden habe. Danke nochmals.![]()
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)