Buttonleiste die sich verfärbt

pauschpage

Erfahrenes Mitglied
Hallo!

Ich möchte gerne eine Buttonleiste erstellen, die sich bei jedem Link verfärbt.
Angenommen bei "Home" ist die leiste blau, "Guestbook" grün, "Kontakt" rot ....

Die leiste ist ein einfaches rechteck, welche unter den Text-Buttons liegt.

Das Problem ist, wie springe ich zwischen den einzellnen Farben hin und her?...


Hat jemand eine idee?


danke
 
Hi,

wandele das Recheck in einen MovieClip um und gib ihm einen Instanznamen (z.B. background). Dann kannst Du die Farbe z.B. mit setRGB einstellen:
PHP:
var myColor = new Color(background);

button1.onPress = function() {
    myColor.setRGB(0xFF0000);
}

button2.onPress = function() {
    myColor.setRGB(0x00FF00);
}

Gruß
.
 
ok...

nur hab ich da noch ein problem.... die farben sollten sich nicht schlagartig - sondern animiert verändern....

kann man das irgendwie noch einbauen? ;-]
 
Hi,

geht auch. Ich habe mal ein Beispiel dazu hochgeladen.

Gruß

P.S.: Netiquette nicht vergessen!
.
 

Anhänge

  • farbleiste.zip
    4,8 KB · Aufrufe: 68
PERFEKT!

Genau sowas suche ich...

nur möcht ich den script auch irgendwie verstehen (obwohl ich fast 0 ahnung in action script habe...)

ich hab mal den code hier kopiert..

Code:
var cl = new Color(leiste);
var tr = new Object();
tr.rb = tr.gb=tr.bb=0;
dr = 0;
dg = 0;
db = 0;
was heißt das "dr, dg, db" ?

Code:
function fadeTo(r, g, b) {
	dr = r;
	dg = g;
	db = b;
	this.onEnterFrame = function() {
		tr.rb += (dr-tr.rb)/10;
		tr.gb += (dg-tr.gb)/10;
		tr.bb += (db-tr.bb)/10;
		cl.setTransform(tr);
		if (Math.abs(dr-tr.rb)+Math.abs(dg-tr.gb)+Math.abs(db-tr.bb)<3) {
			tr.rb = dr;
			tr.gb = dg;
			tr.bb = db;
			cl.setTransform(tr);
			delete this.onEnterFrame;
		}
	};
}
Kann man hier irgendwo die Übergangsgeschwindigkeit einstellen?


Vielen DANK!

christian
 
Jupp,

rb, gb und bb sind die Offseteigenschaften des Transform-Objektes für das Color-Objekt. Schau mal in der Hilfe nach "Color-Klasse" und "Color.setTransform".

Man kann auch mit ra, ga und ba arbeiten, aber ich bevorzuge die relative Änderung über den Offset (ist natürlich auch abhängig von den Anforderungen).

Die Geschwindigkeit änderst Du, indem Du in diesen Zeilen:
PHP:
tr.rb += (dr-tr.rb)/10;
tr.gb += (dg-tr.gb)/10;
tr.bb += (db-tr.bb)/10;
die 10 gegen andere Zahlen austauschst. Grössere Zahlen = langsamer.

Erklärung dafür: Ich messe den "Abstand" zwischen meinem Zielwert und dem aktuellen Wert und addiere bei jedem Frameaufruf einen Teil dieses Abstandes zu meinem Wert. Mit 10 würde ich mich z.B. jeden Frameaufruf um 10% meiner Zielfarbe nähern.

Gruß
.
 
ahh...

ok - das versteh ich.....


jetzt wirds noch ein bisschen schwerer...
ich möchte, dass sich verschiedene animationen (movieclips) beim click auf einen Button abspielen....

brauch ich da auch wieder einen speziellen code?


thx.
 
Hi,

hmm, diese Aussage ist ziemlich vage. Was genau soll geschehen: auf der Bühne befindliche MovieClips ein/ausgeblendet und/oder abgespielt werden, Clips aus der Bibliothek instanzieren, externe SWF-Dateien einladen und anzeigen?

Erkläre bitte noch einmal genauer, wie Du Dir das vorstellst, Dann können wir Dir sicher weiterhelfen.

Gruß
.
 
ich habe mal einen screenshot angehängt.


hier ist die veränderte buttonleiste.
Ober dieser Leiste sollte eine Animation abgespielt werden (ein movieclip).

Wenn man z.B auf "Photos" klickt - spielt sich eine animation mit text und bild ab...
klickt man auf einen anderen button - so kommt wieder eine eigene animation, sodass bei jedem Thema ein eigenes Bild zugeordnet wird.

Das Bild sollte wiederum nicht schlagartig, sondern eingeblendet erscheinen - doch das hab ich schon im movieclip mit einem Bewegungstween geregelt....

den movieclip kann ich auch auf die bühne legen, oder auch nur in der Bibliothek lassen...



danke nochmal!
 

Anhänge

  • Unbenannt-1.jpg
    Unbenannt-1.jpg
    44,1 KB · Aufrufe: 104
Hi,

hmm, wo ist dann da das Problem? Ich nehme an, Du weisst, wie man mit onRelease/onPress auf ein Mausereignis erstellt und auch, wie man MovieClips einblendet (_visible-Eigenschaft) bzw. aus der Bibliothek instanziert (attachMovie). Bitte erklär, wo genau Du nicht weiterkommst. Liegt es an der Syntax, oder daran, dass Du auf das Ausfaden eines Clips warten willst, bevor Du den nächsten einblendest?

Wenn Du das Ein- und Ausfaden über Tweening geregelt hast, leg doch einfach alle Clips übereinander und sag auf den Buttons z.B. so etwas:
PHP:
on(release) {
    _parent.clip1.fadeIn();
    for (var i=2; i<=_parent.clip_anzahl; i++) {
        _parent["clip" + i].fadeOut();
    }
}
und den Clips verpasst Du die Funktionen fadeIn und FadeOut, die nichts weiter machen, als zu den entsprechenden Frames zu springen.

Gruß
.
 

Neue Beiträge

Zurück