Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 29-03-2006, 08:18   #1 (permalink)
It's all a Game
 
Benutzerbild von Kandidat
 
Registriert seit: Sep 2004
Ort: Berlin
Beiträge: 53
Lightbulb RGB HexCode zerstückeln modifizieren und wieder zusammensetzen

Hallo allerseits,

ich bin am experimentieren mit Hexadezimalcodes. Folgendes soll passieren:

In einem Aray wird der Hexadezimalwert für RGB zerstückelt aufgenommen und später mit einem faktor BRIGHTROLL verändert.
PHP-Code:
_global.BRIGHTROLL 0x10;
//
//ARRAY (Label, URL, R, G, B)
_global.ARRAY_0 = new Array("Label""URL"0xAA0x220x33);
_global.ARRAY_1 = new Array("Label""URL"0x180x220x33);
_global.ARRAY_2 = new Array("Label""URL"0x880x220x33); 

Es sollen zwei Farben aus den Arrayinformationen errechnet werden:
PHP-Code:
RIDERFRONT.prototype.GETcolours = function(nr) {
    var 
myColor nr;
    
_global["ARRAY_"+myColor][2];
    
_global["ARRAY_"+myColor][3];
    
_global["ARRAY_"+myColor][4];
//
    
this.myColorStart = ["0x"+R+G+B]; 
// Wie kann man jetzt die Werte wieder aneinanderreihen?
//
    
_global["ARRAY_"+myColor][2]+BRIGHTROLL;
    
_global["ARRAY_"+myColor][3]+BRIGHTROLL;
    
_global["ARRAY_"+myColor][4]+BRIGHTROLL;
    
this.myColorOver = ["0x"+R+G+B];
    
//
    
trace(this.myColorStart);
    
trace(this.myColorOver);
    
this.farbe = new Color(_root.RIDER_mc);
    
this.farbe.setRGB(this.myColorOver);
}; 
__________________
//Iss nich immer so viel sinnlosen Zucker!
//Iss mal ne Banane zur Abwechslung!

viel.Vitamine = Gesund (Duuuuuuu! Ganove ;-)


Links:
Mein Kofferradio. Mit lauter Smith-Songs
Mein MySpace Account
Kandidat ist offline   Mit Zitat antworten
Alt 29-03-2006, 08:34   #2 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Bissl im falschen Bereich gelandet...
--> verschoben
sonar ist offline   Mit Zitat antworten
Alt 29-03-2006, 11:08   #3 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
hi.

was genau willst du machen?
ich bin mir nicht ganz sicher, aber ich glaube die werte müssen
per bitverschiebung wieder zusammengesetzt werden.
dies geht zumindest mit numerischen werten (0-255).

PHP-Code:
deinFarbobjekt.setRGB(R<<16 G<<B); 
gruß, gaspode
gaspode ist offline   Mit Zitat antworten
Alt 29-03-2006, 18:18   #4 (permalink)
It's all a Game
 
Benutzerbild von Kandidat
 
Registriert seit: Sep 2004
Ort: Berlin
Beiträge: 53
Gaspode, Danke für Deinen Vorschlag. Ich habe mich in die Bitweise Verschiebung eingelesen und bin mir nicht sicher, ob das zur Lösung führt.

Es soll folgendes Passieren

1. 0x887766 ist ein Code der aus drei Segmenten besteht
2. Diesen möchte ich aufteilen in 0x88 0x77 0x66
3. Dann werden die Segmente manipuliert z.B. (0x88+0x11) (0x77+0x11) (0x66+0x11)
4. Das soll dann wieder zu 0x998877 zusammengefasst werden
__________________
//Iss nich immer so viel sinnlosen Zucker!
//Iss mal ne Banane zur Abwechslung!

viel.Vitamine = Gesund (Duuuuuuu! Ganove ;-)


Links:
Mein Kofferradio. Mit lauter Smith-Songs
Mein MySpace Account
Kandidat ist offline   Mit Zitat antworten
Alt 29-03-2006, 18:36   #5 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Gewöhn dir ab, eine Farbe als String zu sehen. Es handelt sich einfach nur um eine Zahl, 0xXXXXXX ist ihre Darstellung im Hexadezimalsystem, aber immernoch die gleiche Zahl.

Hier mal Beispielcode, musst halt noch absichern, dass die Ergebnisfarbkomponenten zwischen 0 und 255 liegen:
ActionScript:
  1. color0 = 0x336699;
  2. addition = 0x11;
  3.  
  4. // könnte man auch mit >> machen aber so find ichs leserlicher
  5. var red0 = color0 & 0xFF0000;
  6. var green0 = color0 & 0x00FF00;
  7. var blue0 = color0 & 0x0000FF;
  8.  
  9. var red1 += addition;
  10. var green1 += addition;
  11. var blue1 += addition;
  12.  
  13. var result = (red1 << 16) + (green1 << 8) + (blue1 <<0);

EDIT: BRRRrrr, ganz furchtbarer Code, bitte den von unten angucken!
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)

Geändert von Janoscharlipp (29-03-2006 um 19:49 Uhr)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 29-03-2006, 19:24   #6 (permalink)
It's all a Game
 
Benutzerbild von Kandidat
 
Registriert seit: Sep 2004
Ort: Berlin
Beiträge: 53
Ok also doch die Bitweise Verschiebung, entschuldige das laienhafte Anzweifeln @gaspode

Das ganze ist noch sehr schwer verständlich für mich. Was genau passiert denn bei Linie 5-7?
ActionScript:
  1. var red0 = color0 & 0xFF0000; //bleibt das hier übrig? 0x330000
  2. var green0 = color0 & 0x00FF00; //bleibt das hier übrig? 0x006600
  3.  

Bei Zeile 9-11 ist mir nicht ganz schlüssig woher die Grundinformationen in den Variablen (z.B. red1) herkommen.

Was dann in Zeile 13 bedeutet, dass hier mit der Bitweisen Verschiebung die Zahlen wieder richtig plaziert werden.

ActionScript:
  1. var result = (red1 << 16) + (green1 << 8) + (blue1 <<0);
  2. this.farbe.setRGB(result);
  3. //Und so könnte man den Wert verwenden, oder?
  4.  
__________________
//Iss nich immer so viel sinnlosen Zucker!
//Iss mal ne Banane zur Abwechslung!

viel.Vitamine = Gesund (Duuuuuuu! Ganove ;-)


Links:
Mein Kofferradio. Mit lauter Smith-Songs
Mein MySpace Account
Kandidat ist offline   Mit Zitat antworten
Alt 29-03-2006, 19:47   #7 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Bah, das war voll daneben, alle deine Einwände sind richtig. Ich hatte es nur fix und schlampig zusammengeschustert ...

Also hier nochmal ein Update, wieder ungetestet, aber sorgfältiger:
ActionScript:
  1. function addToColor(clr, addition) {
  2.     var red0 = (clr & 0xFF0000) >> 16;
  3.     var green0 = (clr & 0x00FF00) >> 8;
  4.     var blue0 = (clr & 0x0000FF) >> 0;
  5.        
  6.     var red1 = Math.max(0, Math.min(255, red0 + addition));
  7.     var green1 = Math.max(0, Math.min(255, green0 + addition));
  8.     var blue1 = Math.max(0, Math.min(255, blue0 + addition));
  9.        
  10.     return ((red1 << 16) + (green1 << 8) + (blue1 << 0));
  11. }
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 29-03-2006, 20:32   #8 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
>entschuldige das laienhafte Anzweifeln @gaspode
habe das selbst erst vor kurzem einigermaßen kapiert.

gruß, gaspode
gaspode 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 03:20 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele