Buttons je nach Aufenthaltsort auf einer Website verändern...

HAL

Erfahrenes Mitglied
Hi!

Ich bin grad dabei, meine erste flash-Seite zu gestalten.

Wie bekomme ich hin, dass der Button zu dem Seitenteil, wo man gerade ist, eine andere Farbe als normal hat, aber beim Verlassen dieses Seitenteils wieder normal wird?


Wenn ich also beispielsweise in der Navigationsleiste meiner Website einen Link "Photos" habe, soll sich der Button für diesen Link von weiss auf schwarz färben. Wenn ich dann wieder auf die "Hauptseite" gehe, soll der "Photos"-Button wieder weiss und dafür der "Hauptseite"-Button schwarz werden.

Danke für jede Hilfe,

HAL
 
Hi,

da gibt es mehrere Möglichkeiten, je nachdem, wie Deine Seite aufgebaut ist.

Du könntest jedem Button z.B. eine Variable "isActive" geben, und beim aktualisieren die Farbe aller Buttons nach dem Wert dieser Variable anpassen.

Wenn sich Deine Unterseiten auf verschiedenen Schlüsselbildern befinden, kannst Du natürlich auch die Buttons auf Schlüselbilder legen und die Farbe "per Hand" anpassen.

Wenn Du Deine Datei postest, kann ich Dir sicher einfacher zeigen, was ich meine.

Gruß
 
Original geschrieben von Datic
Hi,

da gibt es mehrere Möglichkeiten, je nachdem, wie Deine Seite aufgebaut ist.

Du könntest jedem Button z.B. eine Variable "isActive" geben, und beim aktualisieren die Farbe aller Buttons nach dem Wert dieser Variable anpassen.

Wenn sich Deine Unterseiten auf verschiedenen Schlüsselbildern befinden, kannst Du natürlich auch die Buttons auf Schlüselbilder legen und die Farbe "per Hand" anpassen.

Wenn Du Deine Datei postest, kann ich Dir sicher einfacher zeigen, was ich meine.

Gruß


Also ich hab vor die Unterseiten als externe Flash-Dateien einzibinden...Wie das geht muss ich auch noch in Erfahrung bringen.

Wo kann ich mich über die Benutzung von Variablen in flash informieren?

Danke,
HAL
 
Hi,

Wo kann ich mich über die Benutzung von Variablen in flash informieren?
Puh, da gibt es viele Möglichkeiten:

  • die ActionScript-Referenz bzw. die Flash-Dokumentation
  • hier im Forum findest Du auch viele Beiträge, die sich mit Ähnlichem befassen
  • Tutorials
  • oder notfalls auch ein Griff zur Fachliteratur (ich selbst kann Dir da kaum Tipps geben, aber schau doch z.B. mal bei Tutorials.de in die Bücherecke)

Gruß
 
So, ich hab jetzt ein bisschen in der Hilfe gestöbert und rumprobiert, aber es funktioniert noch nicht. Ich kann keinen Fehler finden, was wahrscheinlich an meiner gerigen Flasherfahrug liegt. Bitte helft mir weiter:

Als erstes habe ich die globale Variable "location" definiert. Wo das geschieht sollte ja bei einer Global keine Unterschiede machen, oder?

Das ist der Code für den Button "Home" (bzw für die Schalltfläche, die den Movieclip der den eigentlichen Button ausmacht, steuert). Wenn man auf den Button klickt, soll die Variable "location" den Wert "Home" bekommen (siehe Script).
PHP:
on (rollOver) {
	if (location=!"Home") {
		this.ButtonHome.gotoAndPlay(2);
	}
}
on (rollOut) {
	if (location=!"Home") {
		this.ButtonHome.gotoAndPlay(6);
	}
}
on (release) {
	location = "Home";
}

Nun will ich aber noch bewirken, dass der Button zu der Unterseite wo man sich gerade aufhält verändert. Das soll folgendes Script erledigen, das ich in die Zeitleiste geschrieben habe (da wo auch die Variable "location" definiert wird):

PHP:
if (location="Home") {
	this.ButtonHome.gotoAndPlay(11);
}
if (location=!"Home") {
	this.ButtonHome.gotoAndPlay(16);
}

Wenn also "location" den Wert "Home" bekommt, soll sich der Button verändern. Vice versa wenn "location" dann nicht mehr "Home" ist.

Wenn ich nun auf den Button klicke, hat das absolut keinen Effekt. Der Button verhält sich weiterhin so wie es vorgesehen ist, falls "location" nicht "Home" ist.

Wo liegt der Fehler?

THX
HAL




_________________________________________
MOD EDIT:
Bitte für AS Code den PHP Code Button nehmen, nicht den CODE Button , danke ...
_________________________________________
 
Zuletzt bearbeitet von einem Moderator:
Hi,

nun, wo Du eine "lokale" Variable definierst und ansprichst spielt schon eine Rolle. In Deinem Beispiel sprichst Du z.B. eine Variable "_root.buttonHome" an, da Du Dich in einer Ereignisprozedur für diesen Clip befindest. Ich würde es beispielsweise folgendermaßen versuchen:
PHP:
on (release) { // Mausereignisse für jeden Button
    _root.location = 1; // Die Buttons sind hier z.B. "button1" - "button5" benannt
    _root.showLocation();
}
...
und auf _root eine globale Funktion:
PHP:
function showLocation() {
    for (var i=1; i<=5; i++) {
        var bdest = (location == i) ? "active" : "inactive"; // Bildbezeichner für Aktiv/Inaktiv
        eval("button"+i).gotoAndPlay(bdest);
    }
}

Gruß

P.S.: Der "Ungleich"-Operator sollte "!=" statt "=!" formuliert werden.
 
ooook....
warum gehts nicht mit _global? (so hab ichs nämlich gemacht)

und wo ist _root? also wo muss ich den code hinschreiben?

Original geschrieben von Datic
P.S.: Der "Ungleich"-Operator sollte "!=" statt "=!" formuliert werden.

das verwechsle ich IMMER ;)
 
Zuletzt bearbeitet:
Hi,

nun, in Flash sind Variablen nicht automatisch in Funktionen lokal, sondern vielmehr auf der "Ebene"´; in der sie angesprochen werden. Man kann zwar trotzdem von überallher auf eine Variable zugreifen, muss aber auf die richtige Addressierung achten. Eine Variable in einem Clip namens "Button" wird von der Hauptzeitleiste so angesprochen: "button.varName". Umgehehrt kann man von untergeordneten Objekten aus Variablen auf der Hauptebene mit "_root" ansprechen (bzw. _parent um die nächsthöhere Ebene zu erreichen).

Gruß
 
Ich habs jetzt einigermaßen hinbekommen. Allerdings werden Treten die Änderungen, die duch einen "location"-Wechsel ausgelöst werden, immer erst in Kraft, wenn man wieder ein Ereigniss auf dem zu ändernden Button auslöst (also mouseover oder so).

Das ist ja auch klar, da die Variable erst abgefragt wird, wenn der code das anweist. Gibt es eine Möglichket, dass eine Änderung der Variable sofort registriert wird (indem sie alle paar Millisekunden abgefragt wurd oder so...)?


EDIT: Alternaiv würde mich auch helfen zu wissen ob bzw. wie man Objekte zu Gruppen zusammenfassen kann.

Also dass ich zum Beispiel die Gruppe "buttons" habe. Die Buttons könnten "button.home", "button.irgendwas" und "button.nochwas" heissen. Mit "this.button" müsste ich alle zusammen ansprechen können, aber auch mit "this.button.home" nur den einen...

Gibt es eine Möglichkeit für sowas?
 
Zuletzt bearbeitet:
Hi, schau mal in deiner Hilfe nach dem onEnterFrame Event, das ist der Ereignishandler, den du brauchst....

Du kannst all deine Buttons unter einem Movieclip zusammenfügen, den du dann zB Navi nennen kannst, einfach alle markeiren, rechtsklick und in Symbol umwandeln wählen ....

Grüsse
B
 
Zurück