Shop-Hilfe.com
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 14.10.2007, 03:06   #1
TP-Member
 
Benutzerbild von bttrfly
 
Registriert seit: Sep 2007
bttrfly macht alles soweit korrekt

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
Code:
root.aktiv != this
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).
bttrfly ist offline   Mit Zitat antworten


Alt 14.10.2007, 16:17   #2
TP-Member
 
Benutzerbild von bttrfly
 
Registriert seit: Sep 2007
bttrfly macht alles soweit korrekt
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.
bttrfly ist offline   Mit Zitat antworten
Alt 14.10.2007, 22:41   #3
TP-Member
 
Registriert seit: Jul 2007
Ort: München
epiK macht alles soweit korrekt
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.
epiK ist offline   Mit Zitat antworten
Alt 16.10.2007, 15:55   #4
TP-Member
 
Benutzerbild von bttrfly
 
Registriert seit: Sep 2007
bttrfly macht alles soweit korrekt
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;
                        
            }
};
bttrfly ist offline   Mit Zitat antworten
Alt 16.10.2007, 16:08   #5
TP-Moderator
 
Benutzerbild von Wanderratte
 
Registriert seit: Mar 2002
Wanderratte ist ein richtiges Arbeitstier - DANKEWanderratte ist ein richtiges Arbeitstier - DANKEWanderratte ist ein richtiges Arbeitstier - DANKEWanderratte ist ein richtiges Arbeitstier - DANKEWanderratte ist ein richtiges Arbeitstier - DANKEWanderratte ist ein richtiges Arbeitstier - DANKE
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ß.

Eurokicker
Home
Amazon Wunschzettel
Wanderratte ist offline   Mit Zitat antworten
Alt 16.10.2007, 17:18   #6
TP-Member
 
Benutzerbild von bttrfly
 
Registriert seit: Sep 2007
bttrfly macht alles soweit korrekt
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?
bttrfly ist offline   Mit Zitat antworten
Alt 16.10.2007, 17:26   #7
TP-Moderator
 
Benutzerbild von Wanderratte
 
Registriert seit: Mar 2002
Wanderratte ist ein richtiges Arbeitstier - DANKEWanderratte ist ein richtiges Arbeitstier - DANKEWanderratte ist ein richtiges Arbeitstier - DANKEWanderratte ist ein richtiges Arbeitstier - DANKEWanderratte ist ein richtiges Arbeitstier - DANKEWanderratte ist ein richtiges Arbeitstier - DANKE
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ß.

Eurokicker
Home
Amazon Wunschzettel
Wanderratte ist offline   Mit Zitat antworten
Alt 16.10.2007, 18:37   #8
TP-Member
 
Benutzerbild von bttrfly
 
Registriert seit: Sep 2007
bttrfly macht alles soweit korrekt
Hmm, ich denke, dass ich das nun nach mehrmaligem Durchlesen einigermaßen verstanden habe. Danke nochmals.
bttrfly ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Flash > Flash CS3
Zielpfade Zielpfade
« Weihnachtskalender mit Flash und ActionScript 2 | eurer flv player 1.0 mit stop button+playlist »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:28 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67