Hallo,
var key = e.which ? e.which : e.keyCode;
switch(key){
case "81":
key ist eine Variable vom Typ Number, also eine Zahl. Du vergleichst sie an dieser Stelle mit einem String. Das geht normalerweise (10 == "10" ergibt true), aber switch nimmt anscheinend keine automatische Typkonvertierung vor, sondern vergleicht auch die Typen (10 === "10" ergibt false).
Du musst den Nummernwert also auch als Nummernwert notieren, nicht als String.
switch (key) {
case 81 :
...
Das Hintergrund-Ändern-System ist mir unverständlich, aber gut, ich nehme einmal an, du weißt, was du da machst.
Farbteile -=2;
Farbteile ist ein Array! Er wird so definiert:
Farbteile = new Array(12,0,0);
Von einem Array kannst du nicht 2 substrahieren. Du wolltest wahrscheinlich ein Arrayelement ansprechen, denn diese sind schließlich Zahlen, mit denen eine Subtraktion vorgenommen werden kann. Zum Beispiel:
Farbteile[0] -= 2; // Rotanteil verkleinern
Beachte auch, dass du so irgendwann Negativwerte bekommst und die Funktion HintergrundWechseln1 seltsame Resultate liefert.
Mathias