Dmitri Rettig: fadescript funzt net!

Beitrag lesen

Hi,

habe wie schon weiter unten im forum erwähnt, ein fadescript geschrieben.

hier der quellcode:

Das sieht schon besser aus!

<script type="text/javascript">
<!--

function deHEX(colorFROM, colorTO) {

var redFROM = colorFROM.substr(1, 2);
    var greenFROM = colorFROM.substr(3, 4);
    var blueFROM = colorFROM.substr(5, 6);

var redTO = colorTO.substr(1, 2);
    var greenTO = colorTO.substr(3, 4);
    var blueTO = colorTO.substr(5, 6);

colorX = new Array(16);

for(var i = 0; i < 10; i++)

colorX[i] = i;

colorX[10] = "A";
    colorX[11] = "B";
    colorX[12] = "C";
    colorX[13] = "D";
    colorX[14] = "E";
    colorX[15] = "F";

}

function HEX(red, green, blue) {

if((red < 0) && (green < 0) && (blue < 0)) {

return "00";

}

if((red > 255) && (green < 0) && (blue < 0)) {

return "FF";

}

}

function fade(colorFROM, colorTO, step) {

for(var i = 0; i < step; i++) {

red = Math.floor(redFROM * ((step - i) / step) + redTO * (i / step));
        green = Math.floor(greenFROM * ((step - i) / step) + greenTO * (i / step));
        blue = Math.floor(blueFROM * ((step - i) / step) + blueTO * (i / step));

}

}

function setColor() {

document.bgColor = "#" + red + green + blue;

}

fade('#FFFFFF', '#000000', 65);

//-->
</script>

falls einer probleme mit dem code haben sollte, in function fade() sind startfarbe, endfarbe und abstufung eingegeben (werte). jetzt soll der hexdezimal-code in normale zahlen (multiplikation) umgewandelt werden (function deHEX). dann wird gefadet und am ende sollen die zahlen wieder in einen hexcode gefasst werden (function HEX).

hoffe ihr könnt mir helfen...

habe es mit normalen dezimalzahlen (rgb wert) 1a hinbekommen, aber ich möchte mich ja weiterbilden und möchte gerne mit hexzahlen arbeiten.

warte auf eure hilfe ;)

Das Problem bei deinem Code ist, dass beispielsweise "FF" < 0 eine Fehlermeldung ergibt. Ich kann dir einen Denkanstoss geben:

hexZiffer = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F");

Dieses Array enthält alle "Ziffern", die eine Hexadezimalzahl enthalten kann. Die obige Schreibweise ist äquivalent der

hexZiffer[0] = "0";
hexZiffer[1] = "1";
...
hexZiffer[15] = "F";

Auffällig ist, dass der Index genau den Dezimalwert der Ziffer darstellt, also F = 15.

Jetzt kannst du ein einer for-Schleife jeden "Buchstaben", beispielsweise deines Wertes druchlaufen, und diese durch Vergleich mit jedem Glied dess Arrays hexZahlen in dezimalschreibweise umschreiben.
Wenn du die anschliessend die Zahlen multiplizierst, vergiss die Indizies nicht. F5 = 15*16^1 + 5*16^0 ... also ein Polynom mit Basis 16.

Ich hoffe, dass mein Denkanstoss dir weiterhilft.

MfG Dmitri