 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Fragen stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
14.10.2007, 03:06
|
#1
|
|
TP-Member
Registriert seit: Sep 2007
|
Zielpfade
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.
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;
}
};
Wie ändere ich dies aber z.B. um, wenn mein MC mit den Buttons eine Ebene drunter liegt.
_root => biography => but1
Wo muss ich überall diesen "biography"-Pfad angeben?
Bei den Buttons muss das ja so aussehen.
Code:
_root.biography.but1.onRollOver = buttonOver;
_root.biography.but1.onRollOut = buttonOut;
Aber was ist z.B. mit
Code:
this.gotoAndStop(2)
oder 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?
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).
|
|
|
14.10.2007, 16:17
|
#2
|
|
TP-Member
Registriert seit: Sep 2007
|
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.
|
|
|
14.10.2007, 22:41
|
#3
|
|
TP-Member
Registriert seit: Jul 2007
Ort: München
|
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.
|
|
|
16.10.2007, 15:55
|
#4
|
|
TP-Member
Registriert seit: Sep 2007
|
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;
}
};
|
|
|
16.10.2007, 16:08
|
#5
|
|
TP-Moderator
Registriert seit: Mar 2002
|
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
|
|
|
16.10.2007, 17:18
|
#6
|
|
TP-Member
Registriert seit: Sep 2007
|
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:
Code:
(_root.aktiv != this)
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.biography.aktiv != this)
Und das wiederum ist doch bei einem relativen Pfad dasselbe wie:
Code:
(this.aktiv != this)
Oder bringe ich da etwas völlig durcheinander?
|
|
|
16.10.2007, 17:26
|
#7
|
|
TP-Moderator
Registriert seit: Mar 2002
|
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 
|
|
|
16.10.2007, 18:37
|
#8
|
|
TP-Member
Registriert seit: Sep 2007
|
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)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 15:26 Uhr.
|
 |