Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 14-06-2005, 20:13   #1 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Farbwertumrechnung von Hexwerten

Hallöchen,

ich suche irgendwie eine Formel, womit ich eine übergebene Hexadezimalzahl manipulieren kann.
Und zwar möchte ich wenn ich den Farbwert "0xFFFFFF" ( weis ) an diese übergebe dann als Ergebnis ein dunkleres weis.
Und wenn ich schwarz übergebe soll ein helleres herauskommen.
Es soll quasi der "passende" Schlagschatten von der übergebenen Farbe ermittelt werden.
Wenn es geht soll dies für alle Farben anwendbar sein.


Aber ich bekomme es einfach nicht hin.
Ich muss ja auch unterscheiden ab wann die gesuchte Farbe heller oder dunkler werden soll ( sicherlich ab der Mitte, das währe bei 8 ).
Kann mir da jemand einen hilfreichen Tipp geben?
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 14-06-2005, 20:16   #2 (permalink)
poke
 
Registriert seit: Dec 2002
Ort: Iserlohn [NRW]
Beiträge: 2.304
hmm. es ist schwer, allgemein zu sagen, wie farben dunkler werden ^^ wenn du da ne idee hättest, könnte man dir sicher helfen - so würde mir nichts einfallen..
pokepika ist offline   Mit Zitat antworten
Alt 14-06-2005, 20:23   #3 (permalink)
Blockwart ;o)
 
Registriert seit: May 2005
Ort: Neu-Anspach (Hoch-Taunus)
Beiträge: 260
auch hmm...

Eine Möglichkeit wäre vielleicht, übergebenen Farbwert in seine RGB-Bestandteile zu zerlegen - und dann um prozentuale Werte zu erhöhen/verringern

Aber der genaue Lösungsweg ist mir getz auch nicht klar...
__________________
------------
Gruß

Dat Bonsai

hups...Hier gibbet ja auch ne "Suchfunktion"... und---
hups..."F1" drücken kannte ich auch noch nicht ;)

Sternzeichen "Jungfrau" ... das dürfte vieles erklären ;)

Geändert von DatBonsai (14-06-2005 um 22:52 Uhr)
DatBonsai ist offline   Mit Zitat antworten
Alt 14-06-2005, 20:53   #4 (permalink)
Banned
 
Benutzerbild von projecktx
 
Registriert seit: Sep 2003
Beiträge: 2.071
http://www.sephiroth.it/proto_detail.php?id=154

^^ ein ansatz ^^

übrigens ich würde es wiklich prozentual machen also
ActionScript:
  1. if (MeinRot>127){
  2. Diff=255-MeinRot;
  3. MeinNeuesRot=Math.floor(MeinRot-(Diff*0,15));//die 0,15 für 15 %
  4. } else {
  5. Diff=127-MeinRot;
  6. MeinNeuesRot=Math.floor(MeinRot+(Diff*0,15));//die 0,15 für 15 %
  7. }

Gruss Sascha

Geändert von projecktx (14-06-2005 um 20:55 Uhr)
projecktx ist offline   Mit Zitat antworten
Alt 14-06-2005, 20:55   #5 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Danke ersteinmal, hatte bisher das so...
PHP-Code:
function hexToNum){
    var 
str s.toLowerCase();
    switch( 
str ){    
        case 
'a': return 10;
        case 
'b': return 11;
        case 
'c': return 12;
        case 
'd': return 13;
        case 
'e': return 14;
        case 
'f': return 15;
        default: return -
1;
    }    
}

function 
toRGBstr){
    
// rot
    
var str.slice23) ;
    var 
r1 = ( String(Number(n)) == "NaN" ) ? hexToNum) : n;
    
str.slice34);
    var 
r2 = ( String(Number(n)) == "NaN" ) ? hexToNum) : n;
    
// gruen
    
str.slice45);
    var 
g1 = ( String(Number(n)) == "NaN" ) ? hexToNum) : n;
    
str.slice56);
    var 
g2 = ( String(Number(n)) == "NaN" ) ? hexToNum) : n;
    
// blau
    
str.slice67);
    var 
b1 = ( String(Number(n)) == "NaN" ) ? hexToNum) : n;
    
str.slice78);
    var 
b2 = ( String(Number(n)) == "NaN" ) ? hexToNum) : n;
    
// Berechnung
    
r1 r1 16 r2;        // rotWert
    
g1 g1 16 g2;        // gruenWert
    
b1 b1 16 b2;        // blauWert

EDIT:

...mach jetzt aber ersteinmal Feierabend, Birne dicht da kommt jetzt eh nix mehr brauchbares raus, vielleicht morgen ...falls einer langeweile hat oder ne Idee der kann sich ja hier weiter versuchen.
__________________
ERROR: Signature is too large

Geändert von rendner[i] (14-06-2005 um 20:58 Uhr)
rendner[i] ist offline   Mit Zitat antworten
Alt 14-06-2005, 21:05   #6 (permalink)
-
 
Benutzerbild von federer
 
Registriert seit: May 2004
Beiträge: 121
Hallo rendner[i]

Diese Funktionen habe ich im Forum gefunden:

ActionScript:
  1. function RGBToHex(RGB)
  2. {
  3.     return "0x" + (RGB[0] << 16 | RGB[1] << 8 | RGB[2]).toString(16);
  4. }
  5.  
  6. function HexToRGB(Hex)
  7. {
  8.     R = (Hex & 0xff0000) >> 16;
  9.     G = (Hex & 0x00ff00) >> 8;
  10.     B = Hex & 0x0000ff;
  11.     return new Array(R,G,B);
  12. }
  13.  
  14. Farbe = "0xFFFFFF";
  15. RGB = HexToRGB(Farbe);
  16. RGB[0] -= 20; //Rot-Anteil verringern
  17. RGB[1] -= 20; //Grün-Anteil verringern
  18. RGB[2] -= 20; //Blau-Anteil verringern
  19. NeueFarbe = RGBToHex(RGB);
Ich glaube, das könnte dir helfen...

greez
federer ist offline   Mit Zitat antworten
Alt 14-06-2005, 21:34   #7 (permalink)
Blockwart ;o)
 
Registriert seit: May 2005
Ort: Neu-Anspach (Hoch-Taunus)
Beiträge: 260
Manchmal liebe ich"Brainstorming"
__________________
------------
Gruß

Dat Bonsai

hups...Hier gibbet ja auch ne "Suchfunktion"... und---
hups..."F1" drücken kannte ich auch noch nicht ;)

Sternzeichen "Jungfrau" ... das dürfte vieles erklären ;)
DatBonsai ist offline   Mit Zitat antworten
Alt 15-06-2005, 06:58   #8 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
@ federer:
goil!

Mensch muss echt mal wieder mit meinen Suchbegriffen total daneben gelegen haben.
Das sieht echt schnieke aus...da kann man ja jetzt loslegen und das eigentliche Ziel ansteuern.
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 15-06-2005, 07:36   #9 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
kopfschüttel,
@rendner[i] Du hast eine eigentlich recht komplexe Frage hier gestellt und willst dann doch nur sowas trivilaes wissen?
Für das Farbwerte verändern hat Flash das Color-Objekt...für das spezielle Verändern der einzelnen Farbwerte die Funktion color.setTransform die nicht nur das das was federer's Funktion macht genau so gut kann sondern noch einiges mehr...
Zur eigentlichen Frage 'Schlagschatten', mal so ganz dumm...... schon mal an _alpha gedacht?
Beispiel:
ActionScript:
  1. meinBild.duplicateMovieClip("meinSchatten",1);
  2. meinBild.swapDepths(2);
  3. meinSchatten._x+=5;
  4. meinSchatten._y+=5;
  5. meinSchatten._alpha=80;

Gruß

Alois
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois ist offline   Mit Zitat antworten
Alt 15-06-2005, 09:11   #10 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Mensch das ist ja noch feiner, daran hatte ich nicht gedacht ( hatte immer gedacht dat geht nur für mc's ), man lernt nie aus.
Ne mit alpha geht nicht.

EDIT:
Ich glaube das mit dem ColorObject ist doch nicht so vorteilhaft, damit kann ich nicht den aktuellen Farbwert des Textes auslesen.
Also muss ich eh die Textfarbe vom Textfeld holen, und umwandeln.
Und somit muss ich doch auf die Funktionen zugreifen, oder Du hast noch nen anderen Tipp parrat ( oder mache ich es mir wieder zu umständlich? ).
__________________
ERROR: Signature is too large

Geändert von rendner[i] (15-06-2005 um 13:25 Uhr)
rendner[i] ist offline   Mit Zitat antworten
Alt 15-06-2005, 20:52   #11 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Hab’s nun so gelöst, also doch nicht übers ColorObject.
Um zu beeinflussen ob die zurückgegebene Farbe heller oder dunkler sein soll, einfach den 2ten Parameter "manipulieren" ( positiv / negativ ).
Falls ein Farbwert nicht wie prozentual angegeben manipuliert werden kann, wird der größtmöglichste/ kleinstmöglichste Wert genommen der möglich ist.
Dadurch ist das Ergebnis manchmal nicht so wie erhofft.

Hier noch die Funktion:
( die Funktionen "HexToRGB" und "RGBToHex" sind weiter oben zu finden )
PHP-Code:
function setShadowfarbepro){
    var 
rgb HexToRGBfarbe );
    var 
tmp = (new Array().concatrgb )).sort( Array.NUMERIC );
    var 
= ( pro ) ? tmp[0] : tmp[2];
    var 
Math.floor(pro 2.56);
    if(
a-255= -(255 a); 
    else if( 
a-0  p
    
rgb[0] -= a;
    
rgb[1] -= a;
    
rgb[2] -= a;
    return 
RGBToHexrgb );

Und hier noch zum testen 2 TextFelder:
PHP-Code:
this.createTextField("t1"0535300);
this.createTextField("t2"1505000);
t1.autoSize t2.autoSize true;
t1.selectable t2.selectable false;

var 
fmt = new TextFormat("Arial"60);
t1.setNewTextFormatfmt );
t2.setNewTextFormatfmt );

t1.textColor setShadow"0x000000", -70 );
t2.textColor 0x000000;
t1.text t2.text "Hallo!"
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 15-06-2005, 22:12   #12 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
1.)
Zitat:
Zitat von rendner[i]
... daran hatte ich nicht gedacht ( hatte immer gedacht dat geht nur für mc's )...

EDIT:
... des Textes auslesen.
Also muss ich eh die Textfarbe vom Textfeld holen, ...
nochmaldenthreaddurchles,
niergendwo steht daß es 'nicht' um mc's geht, noch steht irgendwo daß es um Textfelder geht, folglich hätte ich natürlich erst mal empfohlen den font einzubinden, wenns geht, dann gehts natürlich auch mit alpha (wenn nicht direkt mit dem Textfeld, warum nicht das Textfeld in einen mc packen...)


2.)...naja und wenn Du bei einem Textfeld eh die Farbe in einer Variable hast, warum dann nicht in einem colorObjekt???

Gruß

Alois
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-

Geändert von Alois (15-06-2005 um 22:14 Uhr)
Alois ist offline   Mit Zitat antworten
Alt 16-06-2005, 08:34   #13 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Ich hatte ja auch nicht gesagt das es um einen mc geht ( aber hätte vielleicht doch einmal erwähnen sollen das ich ein Textfeld meine, sorry ).
Das mit dem Textfeld in einem mc funtzt leider nicht, ohne Einbinden.
Mit hab ich es nicht getestet, weil es in meinem Falle blöd wäre.
Ich kann zwar den alpaWert ändern aber das Textfeld bekommt davon nix mit, ist immun.
Egal ob ich es in einem mc anlegen oder dynamisch erstelle.
( zumindest habe ich es nicht hinbekommen )
Zitat:
naja und wenn Du bei einem Textfeld eh die Farbe in einer Variable hast, warum dann nicht in einem colorObjekt???
Hab mir gedacht, das mit dem ColorObject guckste Dir doch noch mal an, wenn der Alois andauernd darauf hinweist.
Aber irgendwie bringt mich das leicht durcheinander Offsetwerte von -255 bis 255, ist nur zum abziehen oder addieren gedacht, oder ( weniger als 0 und mehr als 255 ist ja nicht )?
Nun ja raus gekommen ist bis jetzt das:
Wobei das zurück gelieferte Ergebnis weit hinter dem der anderen Funktion liegt, liegt aber eher daran das ich mit dem ColorObject so meine Verständnisprobleme habe.
Kannst Du Dir das mal angucken, ich will damit im endeffeckt die Farbanteile prozentual ändern.
PHP-Code:
t1.textColor t2.textColor 0x124589;
setShadow2t150);
t1.text t2.text "Hallo!";

function 
setShadow2tFeldp){
    var 
cObj = new ColortFeld );
    var 
cT cObj.getTransform();
    
cObj.setTransform( { racT.ra+pgacT.ga+pbacT.ba+} );

Aber mir ist gestern noch aufgefallen, dass wenn ich eine Farbe habe und diese heller oder dunkler machen will, sich nicht alle 3 Farbanteile gleichmäßig ändern ( unter Werkzeuge, bei Farben, wenn man dan auf den Farbkreis rechts oben drückt ).
Ich denke, man müsste den Prozentualen Anteil der Farbe errechnen und anhand diesem dann die Farbe manipulieren.
Aber das haut dann doch nicht so hin, denn manche Farben haben einen Anteil von 100% ( also 255 ) und ändern sich erst mehrere Farbnuancen später.
Und wenn man sich neben den RGB-Werten die Felder anguckt, sieht man das sich bei den anderen 3 nur das Feld mit der Helligkeit verändert.
Was ist das für ein Farbmodel?
HSB ist es anscheinend nicht.
Kann man das irgendwie errechnen?
__________________
ERROR: Signature is too large

Geändert von rendner[i] (16-06-2005 um 12:10 Uhr)
rendner[i] ist offline   Mit Zitat antworten
Alt 16-06-2005, 12:23   #14 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
hier mal eine genaue Beschreibung von color.setTransform....
Edit: ...nächste Zeile gelöscht, hab da was falsch verstanden...
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-

Geändert von Alois (16-06-2005 um 12:58 Uhr)
Alois 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:47 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele