ScrollPane mit Buttons füllen usw.

  • Themenstarter Themenstarter Martin Schaefer
  • Beginndatum Beginndatum
M

Martin Schaefer

Hi,

ich sitze hier vor einem Problem bzgl. ScrollPane und bräuchte Hilfe.
Es geht um Flash MX 2004 Professional.

Was habe ich bisher gemacht?
1. Ich habe ein Flashmovie erstellt mit einer ScrollPane.
2. Ich habe die ScrollPane mit einem MC gefüllt.
3. In dem MC habe ich eine Reihe Buttons untereinander angeordnet, inkl. Hover-Effekt.
4. Auf jedem dieser Buttons liegt ein ActionScript:
Code:
on(release){
	getURL("lingo:PaneClick \"buttoninstanzname\"");
}
... wobei "buttoninstanzname" natürlich jeweils pro Button unterschiedlich ist.

Das funktioniert auch alles soweit schon.

Problem:
Ich muss jeden Button, der bereits angeklickt wurde, als "bearbeitet" markieren.
Also z.B. die Buttongrafik gegen eine andere mit einem grünen Häkchen austauschen
und auch die Grafik für den Hovereffekt ebenfalls mit grünem Häkchen.

Ich habe so gut wie keine Ahnung von ActionScript, das gebe ich offen zu.
Deshalb auch oben das reichlich statische Script auf den Buttons. Ich
schaffe es nichtmal, bei einem Klick auf einen Button dessen Instanznamen
automatisch in den getURL-Aufruf zu übernehmen. Also hardcoded, weil ich
nicht mehr kann. Meine Welt ist Director, aber ich benötige die ScrollPane
für die geschilderte Anwendung.

Hauptproblem ist aber wirklich der Austausch der Schaltflächen-Grafiken
nachdem sie einmal angeklickt worden sind.

Wäre euch sehr dankbar, wenn ihr mir bei der Aufgabe helfen könntet. :)

Gruß
Martin
 
Hi,

Im Anhang ein kleines Beispiel. Den MC "menu" solltest Du so wie er ist, in die ScrollPane laden können.

Hier gehe ich die Buttons in einer einfachen for-Schleife durch; wenn Du im Menü nur Instanzen dieses Buttons hast, kannst Du die Objekte auch eleganter mit einer for..in - Schleife durchlaufen.

Den Instanznamen eines Objektes bekommst Du über die _name-Eigenschaft (siehe im MC "button" die Trace-Aktion in der Funktion onRelease: an dieser Stelle kommt dann auch Dein Link hin).

Gruß

P.S.: Der Linkaufruf sollte dann so aussehen:
Code:
getURL("lingo:PaneClick \"" + this._name + "\"");
 

Anhänge

Hi Datic,

danke schonmal für deine Mühe.
Ich werde mich durch dein Beispiel erstmal durchfummeln müssen.
Aber eine Sache ist mir schon aufgefallen. Du hast da lediglich den derzeit "aktiven Link" mit
Häkchen markiert. Mir geht es darum, in einer langen, vertikalen Liste von Buttons all diejenigen
zu markieren, die bereits angeklickt worden sind. Das was du gemacht hast ist sozusagen alles
ein reines "active button" und ich brauch ein "visited button", wenn man das so sagen kann. :)

Wie gesagt, dennoch schonmal danke. Ich werde mich etwas durchfummeln und dabei vielleicht
lernen, wenigstens 1,5 Brocken ActionScript zu verstehen. :)

Gruß
Martin
 
Hi,

achso. ;)

In dem Fall brauchst Du einfach den Aufruf "_parent.pressed(this)" aus dem onRelease-Event zu entfernen:
Code:
this.onRelease = function() {
	if (!isactive) {
		hook._visible = true;
		isactive = true;
		trace("ACTIVE: " + this._name); // <-- hier den Link einsetzen
		//_parent.pressed(this); // <-- weg damit!
	}
}
Diese Funktion (im übergeordneten Objekt "menu") durchläuft nämlich einfach alle Buttons und schaltet die, die nicht dem übergebenen Objekt entsprechen, auf "Inaktiv".

Gruß
.
 
ah, das klingt gut.
Ich lass das noch ein wenig auf mich einwirken, um das Verständnis zumindest dieser
kleinen Materie noch zu maximieren, aber ich denke, mit deinen Tipps kriege ich das jetzt hin. :)

Merci
Martin
 
Zurück