Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-07-2003, 15:03   #1 (permalink)
Neuer User
 
Benutzerbild von get-the-flash
 
Registriert seit: Jun 2002
Ort: München
Beiträge: 2.904
farbübergang dynamisch

huhu,

wie mach ich einen dynamischen farbübergang eines objektes.
also, dass er langesam die farbe von der anfangsfarbe zu einer neuen wechselt ??

gruss
__________________
---
www.wellenmacher.de
get-the-flash ist offline   Mit Zitat antworten
Alt 25-07-2003, 15:14   #2 (permalink)
_______________
 
Benutzerbild von son yu
 
Registriert seit: Mar 2003
Ort: !Schnitzerland
Beiträge: 2.003
wie jetz objekt?

per as erstelt?

da kannste doch nen linearen farbübergang nehmen und den nach der neuen farbe auslaufen lassen...

schöne grüße
__________________
ey… be cool!

Mac OS-X 10.5.6, Safari Version 4 Public Beta (5528.16), on PowerBook 12" G4 1,5 GHz,
1,25 GB RAM, FlashPlayer 9 is auch noch da, wenn ich Lust habe…
son yu ist offline   Mit Zitat antworten
Alt 25-07-2003, 15:35   #3 (permalink)
Neuer User
 
Benutzerbild von get-the-flash
 
Registriert seit: Jun 2002
Ort: München
Beiträge: 2.904
also, ein objekt ist meisten ein mc ! (ist immer so)

diesen mc möchte ich über sog. buttons farblich ändern können. also nicht ein button, der die farbe ändert, das könnte man ja mit einem einfach tween im mc lösen, sondern mehrere.

die farbe des mc's kann ich ja ganz einfach ändern. der teil ist mir bekannt...
ActionScript:
  1. onClipEvent (load) {
  2.     mycolor = new Color(this);
  3. }
  4. onClipEvent (load) {
  5.     myColor.setRGB(farbton);
  6. }
jedoch ist mir nicht bekannt, wie ich die farbe so änder, dass die farbe dynamisch von der einen zur anderen wechselt. (der rechner das quasi selber macht)

son yu alles klar ??
__________________
---
www.wellenmacher.de

Geändert von get-the-flash (25-07-2003 um 15:36 Uhr)
get-the-flash ist offline   Mit Zitat antworten
Alt 25-07-2003, 16:15   #4 (permalink)
_______________
 
Benutzerbild von son yu
 
Registriert seit: Mar 2003
Ort: !Schnitzerland
Beiträge: 2.003
is mir schon klar was nen objekt is...

nur halt is mir auch nicht bekannt, daß man von per hand erstellten movieclips die farbe per as ändern kann...

wie soll das bitte gehen?

also muß dein mc per as generiert werden!

aber was genau haste den vor damit?
__________________
ey… be cool!

Mac OS-X 10.5.6, Safari Version 4 Public Beta (5528.16), on PowerBook 12" G4 1,5 GHz,
1,25 GB RAM, FlashPlayer 9 is auch noch da, wenn ich Lust habe…
son yu ist offline   Mit Zitat antworten
Alt 25-07-2003, 16:44   #5 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
Hallo,

zunächst musst du ein Farbobjekt haben, dass auf deinen MC verweist und diesem die Startfarbe zuweisen. Die "gezeichnete" Farbe lässt sich nicht ändern.

Um beim Farbwechsel keine ekligen Farbsprünge zu erhalten, solltest du mit Hexadezimalen Farbwerten arbeiten, die du je Kanal (RGB) bestimmst.
Also: nimm deine Startwerte, splitte sie in R, G und B und wandel sie in Dezimalzahlen um.
Das gleiche machst du auch mit dem Endwert. Bilde die Differenz jedes Paars. Teile diese Differenz durch einen Divisor (bspw. 10, je nachdem, wieviel Schritte du willst).

In onClipEvent(enterFrame) (oder auch im Frameloop) holst du dir die aktuelle Farbe und addierst die eben berechnete Differenz pro Kanal und weist sie dem Objekt zu.

ActionScript:
  1. onClipEvent(load) {
  2.     this.startColor = "ff9900";
  3.     this.newColor = "0099ff";
  4.     this.col = new Color(this); // Farb-Objekt
  5.     this.col.setRGB(parseInt(this.startColor,16))// setzen des Startwerts
  6.     this.steps = 10;
  7.     this.r = parseInt(this.startColor.substr(0,2),16); // ermitteln der einzelnen Komponenten des Startwerts
  8.     this.g = parseInt(this.startColor.substr(2,2),16);
  9.     this.b = parseInt(this.startColor.substr(4,2),16);
  10.    
  11.     this.newR = parseInt(this.newColor.substr(0,2),16); // ermitteln der einzelnen Komponenten des Endwerts
  12.     this.newG = parseInt(this.newColor.substr(2,2),16);
  13.     this.newB = parseInt(this.newColor.substr(4,2),16);
  14.    
  15.     this.diffR = (this.r - this.newR) / this.steps; // Berechnung der Differenzen
  16.     this.diffG = (this.g - this.newG) / this.steps;
  17.     this.diffB = (this.b - this.newB) / this.steps;
  18. }
  19.  
  20. onClipEvent(enterFrame) {
  21.     cnt++;
  22.     if(cnt < this.steps) {
  23.         this.rgb = this.col.getRGB().toString(16); // aktuelle Farbe auslesen
  24.         this.r = parseInt(this.rgb.substr(0,2),16);
  25.         this.g = parseInt(this.rgb.substr(2,2),16);
  26.         this.b = parseInt(this.rgb.substr(4,2),16);
  27.         this.newR = Math.floor(this.r-this.diffR).toString(16);
  28.         this.newG = Math.floor(this.g-this.diffG).toString(16);
  29.         this.newB = Math.floor(this.b-this.diffB).toString(16);
  30.         if(this.newR.length == 1) this.newR = "0" + this.newR;
  31.         if(this.newG.length == 1) this.newG = "0" + this.newG;
  32.         if(this.newB.length == 1) this.newB = "0" + this.newB;
  33.         this.newColString = this.newR + this.newG + this.newB;    // neue Farbe zusammensetzen und zuweisen
  34.         this.col.setRGB(parseInt(this.newColString,16));
  35.     }
  36. }
Den Code legst du auf deinen MC...fertig


BTW: ein Objekt ist nicht immer ein MC, ein MC aber immer ein Objekt...

Grüße
Sascha

PS: möglich, dass es mit dem Color.setTransform weniger afwendig geht...habe ich aber noch nicht verwendet...

Mir ist noch was aufgefallen: du musst jeweil prüfen, ob die Werte ein oder zweistellig sind und ggf. eine "0" vorne dran setzen, sonst gehts schief. Habs im AS geändert...
__________________
12:15, press return

Geändert von ludabruda (25-07-2003 um 17:01 Uhr)
ludabruda ist offline   Mit Zitat antworten
Alt 26-07-2003, 14:57   #6 (permalink)
Neuer User
 
Benutzerbild von get-the-flash
 
Registriert seit: Jun 2002
Ort: München
Beiträge: 2.904
erstmal danke!
sehr geil.

probleme:
der farbübergang ist mir noch ein wenig schnell. wie kann ich da den faktor runter drehen ??

was ist die 16 im script ??

wenn man als "wechselfarbe" weiss einstellt, haut das nicht hin. hat wahrscheinlich damit zu tun, dass flash bei so übergang dingen nicht so genau ist. sowas hatte ich auch bei bewegungen. da soll es ungenauigkeiten geben....

gruss
__________________
---
www.wellenmacher.de
get-the-flash ist offline   Mit Zitat antworten
Alt 27-07-2003, 08:52   #7 (permalink)
Farbe ist Luxus
 
Benutzerbild von ludabruda
 
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.405
Hi,

die Geschwindigkeit regelst du mit this.steps (ist hier mit 10 angegeben).
Die 16 ist die Basis für die Konvertiertung der Hexadezimalen Zahlen im String in Dezimalzahlen.

Grüße
Sascha
__________________
12:15, press return
ludabruda ist offline   Mit Zitat antworten
Alt 27-07-2003, 09:08   #8 (permalink)
Herr Brot
 
Benutzerbild von mati
 
Registriert seit: Dec 2002
Beiträge: 1.692
man könnte auch einfach zwei mcs nehmen, übereinander legen. der vordere hat die alte farbe, der hintere die neue. beim klick auf button wird der vordere ausgefadet. anschließend ein swapdepths damit der hintere zum vorderen wird. alpha des jetzt hinten liegenden mcs wieder auf 100. beim nächsten buttonklick dem hinteren die neue farbe zuweisen und dann das ganze wieder von vorn.


so far, mati
__________________
„Ich war geheilt, all right!“
mati ist offline   Mit Zitat antworten
Alt 27-07-2003, 11:06   #9 (permalink)
Neuer User
 
Benutzerbild von get-the-flash
 
Registriert seit: Jun 2002
Ort: München
Beiträge: 2.904
Zitat:
Geschrieben von mati
man könnte auch einfach zwei mcs nehmen, übereinander legen. der vordere hat die alte farbe, der hintere die neue. beim klick auf button wird der vordere ausgefadet. anschließend ein swapdepths damit der hintere zum vorderen wird. alpha des jetzt hinten liegenden mcs wieder auf 100. beim nächsten buttonklick dem hinteren die neue farbe zuweisen und dann das ganze wieder von vorn.
ist ne idee, aber da ich ca. 10 verschiedene farbwechsel hab und die größe auch über as dynamisch ändere, wäre das ein wenig unproffessionell. danke, trotzdem.

@ ludabruda

cool, danke, schau ich mal....
__________________
---
www.wellenmacher.de
get-the-flash ist offline   Mit Zitat antworten
Alt 27-07-2003, 11:57   #10 (permalink)
~~~~~~~~~~~~
 
Benutzerbild von _geo_
 
Registriert seit: May 2002
Ort: AUSTRIA (OÖ)
Beiträge: 3.298
link

mfg geo !
__________________
--- :P ---

Blog
Bei unerwünschten Nebenwirkungen zerreißen Sie die Packungsbeilage oder erschlagen ihren Arzt oder Apotheker
_geo_ ist offline   Mit Zitat antworten
Alt 27-07-2003, 12:04   #11 (permalink)
Neuer User
 
Benutzerbild von get-the-flash
 
Registriert seit: Jun 2002
Ort: München
Beiträge: 2.904
Zitat:
Geschrieben von _geo_
link
wow!
supageil!

warum hab ich das über die suchfunktion nicht gefunden !?! danke!

gruss
__________________
---
www.wellenmacher.de
get-the-flash ist offline   Mit Zitat antworten
Alt 05-04-2006, 16:13   #12 (permalink)
Neuer User
 
Registriert seit: Sep 2002
Beiträge: 57
Also ich hab das mal ausprobiert und bei mir bleibt mein MC orange - da ändert sich nichts ! Was mache ich falsch ?
Mamu ist offline   Mit Zitat antworten
Alt 05-04-2006, 18:57   #13 (permalink)
Neuer User
 
Benutzerbild von _Max_
 
Registriert seit: May 2003
Beiträge: 2.475
was für ein flash hast du ?

hast du das hier verwendet helligkeit per as ?
__________________
!!! www.verblitzt.de !!!
_Max_ ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 09:46 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele