Flash Button aktiviert lassen

EmperorAres

Mitglied
Hi zusammen!

Ich habe mal eine Frage bezüglich eines Flash Menüs. Ich habe gerade ein Menü gebaut, daß aus vier einfachen Roll-Over Textbuttons besteht, die jeweils eine HTML Seite in einem Frame aufrufen. Der Übersichtlichkeit halber möchte ich nun, das immer der Button im aktiven Zustand dargestellt wird, der als letzter gedrückt wurde, um dem User zu verdeutlichen, wo er sich zur Zeit befindet. Hat jemand von Euch eine Ahnung, wie das zu realisieren ist / ein Tutorial / einen Link zu diesem Thema?

Schönen Dank! ;)
 
Hi,

Du musst in einer "globalen" Variable speichern, welcher Button im Moment aktiviert ist und beim Klicken den aktuellen wieder in den Ursprungszustand setzen. Such mal im Forum nach "Menu", "Buttons", "aktiviert" u.ä. - die Frage wurde hier schon des öfteren gestellt und es gibt auch einige anschauliche Codebeispiele.

Gruß
.
 
Hi ich hab jetzt mal den Code ein wenig umgeschrieben allerdings funktionniert der nicht so richtig...also um ehrlich zu sein gar nicht. Ich habe meine Buttons (alles MCs) in einem MC namens MC_Navigation (originell, ich weiss...) liegen. Auf den Buttons liegt jeweils dasselbe Script (s.u.), angepasst auf den jeweiligen Button. Vier Buttons mit jeweils einem Zustand für "normal" und "active" in der jeweiligen Zeitleiste:



onClipEvent (enterFrame) {
this.onRollOver = function() {
this.gotoAndStop("active");
};
this.onRollOut = this.onReleaseOutside=function () {
this.gotoAndStop("normal");
};
this.onRelease = function() {
this.gotoAndStop("active");
Home.gotoAndStop("normal");
Documentation.gotoAndStop("normal");
CAT.gotoAndStop("normal");
getURL("../library.html", "contentFrame", "POST");
};
}

Kannst Du mir da nochmal weiterhelfen, woran es liegt, daß die nicht funktionieren/ einen Tip geben, wie das mit den globalen Variablen funktioniert, da ich im Forum nichts gefunden habe, was hierzu passt?

Danke!
 
Hi,

was Du machst - nämlich Mausereignisse in einer onEnterFrame-Methode zu definieren - ist ziemlich unsinnig, da das (je nach Framerate) dann etliche Male pro Sekunde passiert. ;)

Vorschlag:
Code:
// Code auf Button-Zeitleiste:

if (isactive == undefined) {
    var isactive = false;
}

this.onRollOver = function() {
    gotoAndStop((isactive)? "active" : "over");
}

this.onRollOut = this.onReleaseOutside = function() {
    gotoAndStop((isactive)? "active" : "out");
}

this.onPress = function() {
    gotoAndStop((isactive)? "active" : "down");
}

this.onRelease = function() {
    if (!isactive) {
        activate();
        _parent.pressed(this);
    }
}

function activate() {
    gotoAndStop("active");
    isactive = true;
}

function deActivate() {
    gotoAndStop("out");
    isactive = false;
}
Code:
// Dazu Code auf der Zeitleiste, auf der die Buttons liegen:

var buttons = new Array("button1", "button2", "button3"); // Instanznamen deiner Buttons

function pressed(obj) {
    for (var i in buttons) {
        if (button[i] != obj) {
            obj.deActivate();
        } else {
            // hier kannst Du - je nach Button "obj" - die gewünschte Aktion einfügen!
        }
    }
}
Um mit jeden Button z.B. eine andere Seite aufzurufen oder einen anderen Film zu laden, kannst Du zusätzlich zu dem Array "buttons" ein zweites Array "actions" anlegen, in dem Du die Seiten, Pfade oder Zielframes speicherst. In der Funktion "pressed" kannst Du dann an der von mir kommentierten Stelle das Arrayelement mit dem Index "i" ausführen lassen.

Gruß
.
 
Hi,

danke für die schnelle Antwort, leider blicke ich da nicht so ganz durch:

einmal schreibst Du: //Code auf Button-Zeitleiste:
dann: // Dazu Code auf der Zeitleiste, auf der die Buttons liegen:

Wo ist da der Unterschied? Oder kommt der komplette Code auf den Frame, in der Ebene, wo die Buttons liegen?

Hast Du hierfür vielleicht noch ein Beispiel:
//hier kannst Du - je nach Button "obj" - die gewünschte Aktion einfügen!
Ersetze ich da obj durch den Buttonnamen?

Wie Du siehst hat mich dieser Code völlig verwirrt...vielleicht kannst Du mir da ja nochmal helfen? DANKE! :confused:
 
Hi,

Mit "Zeitleiste der Buttons" ist die Zeitleiste "im" Button-MC gemeint: Wenn Du den Clip zum Bearbeiten öffnest, verfügt er ja über eine Zeitleiste. Vorteil: Du musst den Code für das Verhalten nicht auf jede einzelne Buttoninstanz legen, wenn Du mehrere Buttons hast, die aus dem selben MovieClip gebildet werden.

Mit "Zeitleiste, auf der die Buttons liegen" ist die Zeitleiste gemeint, die Du siehst, wenn Du nicht nur einen, sondern alle Buttons nebeneinander siehst. Ziehst Du Deine Button-MCs einfach auf die Bühne, ist das die Hauptzeitleiste.

Du musst in meinem Beispiel nichts ersetzen, "obj" ist die übergebene Variable, die eine Referenz auf den angeklickten Button enthält. Sag mir mal, was die Buttons machen sollen (per getURL eine Seite aufrufen, per loadMovie Inhalte laden oder per gotoAndPlay auf der Hauptzeitleiste navigieren), dann poste ich ein konkretes Beispiel.

Gruß
.
 
Hi, nochmals DANKE!

Die Buttons sollen einfach über getURL eine html Seite in einem Frameset öffnen. Dann werde ich mich jetzt nochmal daransetzen...;)
 
Hi,

dann sähe der Code auf der Hauptzeitleiste z.B. so aus:
Code:
var buttons = new Array(button1, button2, button3); // Instanznamen deiner Buttons
var targets = new Array("seite1.html", "seite2.html", "seite3.html"; // Linkziele

function pressed(obj) {
    for (var i in buttons) {
        if (button[i] != obj) {
            obj.deActivate();
        } else {
            getURL(targets[i], "_self"); // wenn neues Fenster, dann "_blank" statt "_self"
        }
    }
}

Gruß
.
 
Hi,

ich habe jetzt eigentlich soweit alles angepasst, allerdings funktionieren die Links nichtund die Buttons bleiben nach einem Klick immer aktiv, egal ob ich einen anklicke oder alle - allerdings passt das jetzt alles mit den RollOver Effekten :D . Im MC_Navigation (in dem alle Buttons als MC's der Navigation liegen) bzw. in dessen Timeline steht folgendes Script:
Code:
var buttons = new Array("button1", "button2", "button3");
// Instanznamen Buttons
var targets = new Array("../frameset_internal/main.html", "../gen_oview.html", "../gen_cat.html", "../library.html");
// Linkziele
function pressed(obj) {
	for (var i in buttons) {
		if (button[i] != obj) {
			obj.deActivate();
		} else {
			getURL(targets[i], "contentFrame", "POST");
		}
	}
}
stop();

In der Zeitleiste der Buttons liegt jeweils(einmal auf jeder Zeitleiste der Buttons) folgendes Script:
Code:
// Mausereignisse definieren:
if (isactive == undefined) {
	// Variable isactive setzen
	var isactive = false;
}
this.onRollOver = function() {
	gotoAndStop((isactive) ? "out" : "active");
	// RollOver Funktion setzen
};
this.onRollOut = this.onReleaseOutside=function () {
	gotoAndStop((isactive) ? "active" : "out");
	// RollOut & ReleaseOutside Funktion setzen
};
this.onPress = function() {
	gotoAndStop((isactive) ? "active" : "active");
	// Press Funktion setzen
};
this.onRelease = function() {
	if (!isactive) {
		activate();
		_parent._parent.pressed(this);
		// Release Funktion setzen
	}
};
function activate() {
	gotoAndStop("active");
	// Aktivieren Funktion bestimmen
	isactive = true;
}
function deActivate() {
	gotoAndStop("out");
	//DeAktivieren Funktion bestimmen
	isactive = false;
}

Kannst Du mir sagen, woran es liegt, das die Links nicht aufgerufen werden bzw. die Buttons sich nicht deaktivieren, sobald ich einen anderen anklicke?

DANKE! :confused: :confused:
 

Neue Beiträge

Zurück