Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05-11-2005, 17:58   #1 (permalink)
User
 
Registriert seit: Apr 2003
Beiträge: 97
Farbe Transformieren

Ich komm einfach nicht dahinter:
Wie kann ich eine MC Farbe langsam und gezielt von einer in die andere transformieren?
Zum Beispiel von: 0xC30000 nach 0xFB0000

Das Problem ist, das ich nicht weiss, wie das Hexadezimale System durchlaufen werden kann.
Das folgende Beispiel geht natuerlich nicht, sollte aber zeigen was ich meine:

Code:
myColor = new Color(myCircle);
myColor.setRGB(0xC30000);

var Farbe1:Number = myColor.getRGB();
var Farbe2:Number = 0xFB0000;


onEnterFrame=function(){
	
	if(Farbe1 <= Farbe2){
		//Wert vergroessern
		Farbe1 ++;
		myColor.setRGB(Farbe1);
		
	}else{
		//Wert verkleinern
	}
}
Emil ist offline   Mit Zitat antworten
Alt 05-11-2005, 18:12   #2 (permalink)
is learning
 
Registriert seit: Oct 2005
Beiträge: 1.019
das geht doch auch per Tweening soweit ich weiss
oder willst du es mit Actionscript machen?
__________________
helping helps
moonartist ist offline   Mit Zitat antworten
Alt 05-11-2005, 18:19   #3 (permalink)
User
 
Registriert seit: Apr 2003
Beiträge: 97
Klar soll das gescriptet sein. Soll ja spaeter mal ne Funktion oder Klasse werden.
Das Beispiel soll ja nur den Kern erfassen und ist dementsprechend so simpel wie moeglich gehalten ..

Emil
Emil ist offline   Mit Zitat antworten
Alt 05-11-2005, 18:33   #4 (permalink)
Neuer User
 
Benutzerbild von Xeef
 
Registriert seit: Sep 2004
Ort: Spain/Ibiza
Beiträge: 942
PHP-Code:
myColor = new Color(myCircle);
myColor.setRGB(0x0000FF);
//
RGB1 myColor.getRGB();
r1 RGB1 >> 16;
RGB1 -= r1 << 16;
g1 RGB1 >> 8;
RGB1 -= g1 << 8;
b1 RGB1;
onEnterFrame = function () {
    
RGB2 0xFF0000;
    
r2 RGB2 >> 16;
    
RGB2 -= r2 << 16;
    
g2 RGB2 >> 8;
    
RGB2 -= g2 << 8;
    
b2 RGB2;
    
//
    
r1 += (r2-r1)/10;
    
g1 += (g2-g1)/10;
    
b1 += (b2-b1)/10;
    if (((
r2-r1)/10)<.1){delete onEnterFrame}
    
trace((r1 << 16 g1 << b1).toString(16))
    
myColor.setRGB(r1 << 16 g1 << b1);
}; 
__________________
Languages : (in the order of knowledge/preference)
Read: Flash AS, PHP, JS, Html, DHtml, Basic, C++, DOS, 3DMaxScript, English, Deutsch, Magyar, XML, Pascal, VB, Spanish
Write: Flash AS, Basic, PHP, JS, DHtml, Html, ..., C++, ...., ..., English, ..., ..., ..., ...., Deutsch, ..., Magyar

wen du mein deutsch nicht magst whele eine andere sparache von den obrigen ;)
Xeef ist offline   Mit Zitat antworten
Alt 05-11-2005, 18:48   #5 (permalink)
:Void
 
Benutzerbild von janoshnosh
 
Registriert seit: Jun 2005
Ort: börlin
Beiträge: 931
hi,
ja das mit dem farbtween ist so ein problem. technisch sieht das ja so aus, dass du in deinem farbwert z.b. 0xFF7700 eine zahl hast (das ist kein string), welche eine hexadezimalzahl repräsentiert. diese zahl setzt sich genau genommen aus drei farben zusammen, jeweils hexadezimalwerte: FF, 77, 00. das entspricht jeweils einem wert von 0 bis 255 (FF ist 255). um einen farbwert in einen anderen faden zu lassen, musst du also diese zahl auseinandernehmen und in ihre einzelwerte zerlegen. jeden dieser werte muss du dann auf den neuen zielwert erhöhen, also wenn du von farbe1=0xrrggbb zu farbe2=0xr'gg'bb' faden willst, musst du das so machen, dass rr=>rr' wird, gg=>gg' und bb=>bb' wird - und das alles gleichzeitig.

ich habe das mal in einer klasse verwirklicht, und auch recht ausführliche anmerkungen zur bedienung dazu geschrieben. die klasse kann so benutzt werden, dass als objekt instanziert wird mit einem start-farbwert und einem end-farbwert (0xrrggbb, ohne "").
nun kann man sich mit der methode getColor() einen farbwert ausgeben lassen, und zwar einen wert zwischen start-farbe und end-farbe. dazu gibt man eine prozentzahl von 0 bis 100 an, also getColor(0) gibt den start-farbwert zurück, getColor(100) den end-farbwert. sehr brauchbar eigentlich, wenns dir gefällt, empfiel die kasse doch einfach weiter.

und wie immer: bei fragen fragen

gruß janosch


p.s.
falls du noch nie externe klassen benutzt hast:
einfach die datei ColorSet.as in den gleichen ordner wie deine fla tun, und dann mal mit dem beispiel-code in der file anfangen - diesen einfach in den ersten frame in der zeitleiste schreiben, und schon sollte es deutlich werden.

pps.
haha schön wärs.... ich hasse flash - also so einfach mit dem "in den ordner tun" scheint das nicht zu sein, du musst irgendwie noch den classpath angeben. dazu in beareiten=>einstellungen=>actionscript=>und da irgendwo den ordner hinzufügen, in dem du die datei hast - ich hab keine ahnung, wieso das gerade wieder nicht geht, denn mit der klasse stimmt eigentlich alles. nur flash macht wieder mal probleme, open source (wie eclipse) behandelt das sehr freundlich.
Angehängte Dateien
Dateityp: zip colorSet_beispiel.zip (6,5 KB, 32x aufgerufen)
janoshnosh ist offline   Mit Zitat antworten
Alt 05-11-2005, 18:52   #6 (permalink)
User
 
Registriert seit: Apr 2003
Beiträge: 97
super danke schonmal fuer die Hilfe. Muss jetzt leider ganz schnell weg und werde die Beispiele spaeter unter die Lupe nehmen..

Emil
Emil ist offline   Mit Zitat antworten
Alt 05-11-2005, 19:04   #7 (permalink)
Flash-Vertrauter
 
Benutzerbild von Starmaster
 
Registriert seit: Dec 2003
Beiträge: 137
Gibs da nicht ne Tween-Klasse, die das berechnet ? (Hab ich noch so dunkel in Erinnerung)
Starmaster ist offline   Mit Zitat antworten
Alt 13-11-2005, 19:12   #8 (permalink)
User
 
Registriert seit: Apr 2003
Beiträge: 97
Tage spaeter..
Hab mich nochmal an die Sache rangesetzt.
Xeefs Besipiel sieht auf anhieb richtig gut aus, macht dann aber bei einigen Tranformationen Probleme. Z.B. bei allen Transformationen, die mit FF.... beginnen.
janoshnosh's klasse ist einwandfrei, habs aber nicht hingekriegt (war auch zu ungeduldig) das fuer meine Belange zu modifizieren.
Uebhaupt muss ich sagen, das ich dieses Bit - geshifte und Hexadezimal - Dezimal gewuerfele ziemlich laestig finde.
Hab aus diesem Grunde mal ein eigenes Beispiel zusammengebaut. Das beruht auf set/getTransform und sieht nicht sonderlich elegant aus. Funktionieren tut es aber ganz tadellos.

Wer will, kann ja mal reingucken.
Verbesserungsvorschlaege sind natuerlich willkommen.

Emil
Angehängte Dateien
Dateityp: zip colorTransform.zip (6,7 KB, 26x aufgerufen)
Emil ist offline   Mit Zitat antworten
Alt 13-11-2005, 21:45   #9 (permalink)
ActionStripper
 
Benutzerbild von Mr.Twister
 
Registriert seit: Nov 2001
Ort: Oldenburg
Beiträge: 3.275
macht es euch doch einfach und ladet die tweening klasse von laco.wz.cz

ohne die tweening-klasse fange ich gar nicht mehr an zu scripten.
damit kann man nämlich z.B. schnell schreiben:

ActionScript:
  1. animType = "linear" // lineare bewegung (ginge auch anders)
  2. animSpeed = 1 // eine sekunde
  3. myMC.colorTo(0x333333,animSpeed,animType)
__________________
Design ist AUCH Geschmackssache.
Mr.Twister ist offline   Mit Zitat antworten
Alt 14-11-2005, 00:35   #10 (permalink)
User
 
Registriert seit: Apr 2003
Beiträge: 97
Na das ist ja ne flotte Sache!!
Warum hat mir das denn vorher noch keiner gesagt?
Emil 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:40 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele