NUr eine Schaltfläche zum aufklappen...

skaterjordan

Mitglied
Hallo!
Dieser Thread hat mir schon mal gut weitergeholfen.
Das einzige Problem, das ich jetzt habe ist, dass sich nicht jede Schaltfläche öffnen soll sondern nur eine.
Ich habe 5 Schaltflächen:
Wir über uns
Aktuelles
Produkte
Kontakt
Impressum

Alle Schaltflächen bis auf "Produkte" sollen einfache Links beinhalten.
Produkte soll als einziges aufklappen und mir dann Platz für sieben weitere Linkschaltflächen geben.

Zur Zeit ist es so, dass sich jede Schaltfläche öffnet. Im Skript habe ich die obersten Button entfernt. Diese lassen sich schon mal nicht mehr aufklappen. Denen kann man dann ja dementsprechend ein Verhalten zusweisen. Nur müssen die Buttons unterhalb von "Produkte" mit im Skript stehen, damit sie sich bewegen.

Nächste und vorerst letzte Frage ist, wie man eine Schaltfläche unter "Produkte" erscheinen lassen kann nachdem es aufgeklappt wurde.
Ich hänge mal die jetzige .fla an.

Danke schon mal im voraus!
 

Anhänge

  • 26225attachment.zip
    12,9 KB · Aufrufe: 108
Zuletzt bearbeitet:
Dabei fällt mir jetzt noch was ein.
Der eine Menüpunkt "Produkte" sollte sich schließen sobal eine andere Schaltfläche gedrückt wird. Somit müssten auch, denk ich mir mal, alle anderen Buttons in das Skript rein.
Ich weiß eben nur nicht wie ich das realisieren soll. Im Grunde genommen müsste man eine Ausnahme machen. Sprich alle bleiben zu bis auf Produkte.

Naja, bin gespannt auf euch!

Bis dahin
Gruß skaterjordan
 
Hi,

#1: Füge die restlichen Buttons wieder zum Array hinzu (es muss bekannt sein, welche überhaupt existieren):
Code:
var buttons = new Array(btn_wir_ueber_uns, btn_aktuelles, btn_produkte, btn_kontakt, btn_impressum);

#2: Lege ein zweites Array an, in dem für jeden Button festgehalten wird, ob er sich "öffnen" kann (true), oder nicht (false):
Code:
var canopen = new Array(false, false, true, false, false);

#3: Modifiziere den Maushandler für die Buttons folgendermaßen:
Code:
	buttons[i].onRelease = function() {
		if (open_but != this.idx && canopen[this.idx]) {
			doExplode(this.idx);
			open_but = this.idx;
		} else {
			doExplode(buttons.length + 1);
			open_but = -1;
		}
	}

Zu Deiner zweiten Frage: Dazu gibt es 1000+1 Möglichkeiten, die - je nach Anforderung - mehr oder weniger geeignet sind. Einige (wahrscheinlich die meisten) dieser Lösungen erfordern eine völlige Neugestaltung dieses Menüs (such dazu eher mal nach "Ausklappmenü"). Gib uns bitte ein paar mehr Infos darüber, wie dieses "Submenü" aussehen soll, wie und wo es erscheinen soll und welche Aktionen jeweils ausgeführt werden.

Gruß
.
 
Modifiziert

Hallo,
ich habe alle Buttons zum Array hinzugefügt und den Maushandler so modifiziert wie du mir es vorgegeben hast. Das zweite Array habe ich ebenfalls angelegt.
Um das mal direkt vorweg zu nehmen; ich bin noch nicht so vertraut mit ActionSkript.
Deswegen hänge ich die jetztige modifizierte Datei an, damit man überprüfen kann wo sich der Fehler eingeschlichen hat. Es funktioniert leider nicht.^^
Wofür es sein soll:
Das wird die zukünftige Navigationsleiste einer Firma werden. Die, wie auch im fla genau diese Punkte beinhalten soll. Der einzige Button der sich aufklappen soll ist "Produkte".
Darunter soll dann Platz für 7 weitere Button sein, die einen Link für ein Framset beinhalten.
Über das Design der Buttons muss noch nicht diskutiert werden, weil es als erstes funktionieren sollte. Es sind Bibliothekselemente die man anschließend ja immer noch ändern kann.

Jetzt schon mal danke für die Hilfe!
 
Zuletzt bearbeitet:
Nur eine Schaltfläche öffnen

Hier ist die modifizierte Datei.

Ich wusste nicht so recht ob das zweite Array an der richtigen Stelle sitzt.
Aber dafür ist sie ja jetzt angehängt.

Hoffe man findet den Fehler.
 

Anhänge

  • 26491attachment.zip
    11 KB · Aufrufe: 53
Zuletzt bearbeitet:
Hi,

Du hast zwar den Maushandler (onRelease) geändert, dabei aber auch den restlichen Inhalt der umschließenden for-Schleife gelöscht - der aus diesen beiden Zeilen bestand:
Code:
buttons[i].base_y = buttons[i]._y;
buttons[i].idx = i;
Die komplette Schleife muss so aussehen:
Code:
for (var i=0; i<buttons.length; i++) {
	buttons[i].base_y = buttons[i]._y;
	buttons[i].idx = i;
	buttons[i].onRelease = function() {
		if (open_but != this.idx && canopen[this.idx]) {
			doExplode(this.idx);
			open_but = this.idx;
		} else {
			doExplode(buttons.length + 1);
			open_but = -1;
		}
	}
}

Gruß
.
 
Prima! Das funktioniert soweit.

Ich hab mal gegooglet um zu schauen wie man dort nun die Schaltflächen einbaut, sodass sie eben im geschlossenen Zustand verschwunden sind und im offen erscheinen.
Zu der Erscheinung der Schaltflächen. Sie sollten einrollen oder einfaden. Ich finde nur absolut nichts passendes dazu. Habe vor mir vier Bücher über Flash, aber in keinem steht was sinnvollen drin.

Also, wie bekomme ich nun die Schaltfläche dahin.

Hoffe das es nicht all zu viel Umstand bereitet mir das zu erklären.
 
Zuletzt bearbeitet:
Hi,

Erklären würde in diesem Fall länger dauern, als einfach ein Beispiel fertig zu machen.

Für eine wirklich dynamische Umsetzung müssten die Submenüs als Unterobjekte der eigentlichen Buttons angelegt werden - da sie aus Schaltflächenobjekten bestehen, ist das leider nur umständlich möglich (verwende nach Möglichkeit immer MovieClips und verzichte auf Schaltflächenobjekte. Mein MC "sub_button" zeigt ein Beispiel, wie das Mausverhalten einer Schaltfläche einfach mit einem MovieClip nachgebildet werden kann). Daher habe ich die Submenüs einfach direkt auf der Bühne positioniert.

Ich habe den Code auf der Hauptzeitleiste überall dort kommentiert, wo er sich auf die Submenüs bezieht. Im vorliegenden Beispiel besitzt nur der Button "Produkte" ein Submenü.

Die MCs "submenue1" und "sub_button" enthalten auch ein wenig Code, der sich hauptsächlich mit dem Einblenden des Menüs befasst. Bei einem Klick auf einen Sub-Button wird die Funktion "pressed" im MC "submenue1" aufgerufen, der die Beschriftung des Buttons übergeben wird. Anhand dessen kannst Du jedem Button eine Aktion zuweisen (z.B. bei "Produkt A" einen Link zu einer anderen Seite ausführen lassen).

Gruß
.
 

Anhänge

  • 26499attachment.zip
    17 KB · Aufrufe: 54
Gleicher Buttonvorlage für alle

Hallo.
Soweit klappt alles mit dem Navigationsmenü.
Nur noch eins. Im "Hauptmenü" habe ich verschiedene Buttons.
Wenn ich jetzt zum Beispiel das Design meiner Buttons im Hauptmenü ändern möchte, muss ich mühselig jeden Button einzeln ändern.
Anders ist es im Submenü, welches ein Movieclip ist. Dort brauche ich nur die zwei Einträge in der Bibliothek zu ändern und schon passen sich alle anderen Buttons im Submenü an.
Der Text wird auch mittels Actionskript hinzugefügt.
Im Prinzip brauche ich genau das auch für das Hauptmenü.

In der angehängten Datei, kann man im Actionskript sehen wo mein Problem liegt.
Ich weiß nicht wie ich Flash sagen kann, dass er bei einem Klick auf einen speziellen Button dort auch das Untermenü einfügt. Und das er es, sobald man auf einen anderen Button klickt, das Submenü wieder ausblenden lässt.

var buttons = new Array(btn_wir_ueber_uns, btn_aktuelles, btn_produkte, btn_kontakt, btn_impressum);
// Submenues für die Buttons:
var canopen = new Array(false, false, submenue1, false, false);
var open_but = -1;

So fängt das Skript im Hauptmenü an. Erkennt ihr mein Problem?
Hier ist deklariert welcher Button sich öffnet und welcher nicht. Aber wenn es nur eine Buttonvorlage gibt (wie es ja sein soll) und jeder Button gleich heißt, weiß ich nicht wie ich es Flash sagen soll. Dafür wären dann ja die Instanzen da. Nur wie wende ich es richtig an?
Das heißt quasi, dass ich das Submenü zweimal brauche. Einmal aus Haupt- und einmal als Submenü.

Ich hoffe ihr könnt mir so schnell wie möglich helfen!
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück