helligkeit statt _alpha verändern?

So, jetzt klappt Ein- und Ausfaden, aber leider nicht auf einen Mausklick - plötzlich muss man zweimal auf denselben Button klicken: einmal für das Schwarzwerden des alten Contents, einmal für das Aufhellen des neuen. Was ist denn nun noch falsch?
PHP:
var cl = new Color(container);
   var tr = cl.getTransform();
   var currentContent = 0;
   // Aktueller Inhalt (0 = keiner)
   function setContent(bname) {
   	var new_content = parseInt(bname.substr(bname.length-2, 2), 10);
   	// Nummer holen
   	if (new_content>0 && new_content != current_content) {
   		if (current_content != 0) {
   			switchContent(new_content);
   			// Inhalt wechseln
   		} else {
   			loadContent(new_content);
   			// Inhalt direkt laden
   		}
   	} else {
   		switchContent(0);
   		// Inhalt ausblenden
   		current_content = 0;
   	}
   }
   function switchContent(nc) {
   	current_content = 0;
   	// Auf Null setzen, damit neue Inhalte schnell angezeigt werden können
   	this.onEnterFrame = function() {
   		tr.rb += (-255-tr.rb)/6;
   		tr.gb += (-255-tr.gb)/6;
   		tr.bb += (-255-tr.bb)/6;
   		cl.setTransform(tr);
   		// Container ausblenden
   		if (Math.abs(0-tr.rb)<-255) {
   			tr.rb = tr.gb=tr.bb=255;
   			cl.setTransform(tr);
   			if (nc>0) {
   				loadContent(nc);
   				// Neuen Inhalt laden, 
   			} else {
   				delete this.onEnterFrame;
 				// oder anhalten, wenn kein Inhalt
   			}
   		}
   	};
   }
   function loadContent(nc) {
   	var stime = getTimer();
   	// Zeitstempel merken
   	loader.loadContent(container, getContentName(nc));
   	// Inhalt laden lassen
   	this.onEnterFrame = function() {
   		tr.rb = tr.gb=tr.bb=0;
   		if (loader.isloaded == true) {
   			// Wenn geladen:
   			current_content = nc;
   			// Aktuellen Inhalt setzen
   			appearContent();
   			// Inhalt anzeigen
   		}
   		if (getTimer()-stime>8000) {
   			// Timeout beim Laden:
   			current_content = 0;
   			// Auf Null setzen
   			tr.rb = tr.gb=tr.bb=0;
   			delete this.onEnterFrame;
   		}
   	};
   }
   function appearContent() {
   	this.onEnterFrame = function() {
   		tr.rb += (0-tr.rb)/5;
   		tr.gb += (0-tr.gb)/5;
   		tr.bb += (0-tr.bb)/5;
   		cl.setTransform(tr);
   		// Inhalt einblenden
   		if (Math.abs(0-tr.rb)<1) {
   			tr.rb = tr.gb=tr.bb=0;
   			delete this.onEnterFrame;
   			// Anhalten
   		}
   	};
   }
 
Hi,

1. Setze den Vergleich mal so:
Code:
if (Math.abs(-255 - tr.rb) < 1) {

2. Die Zeilen
Code:
tr.rb = tr.gb=tr.bb=0;
in der Funktion "loadContent" sind überflüssig, zumal ihnen keine Zuweisung an das Color-Objekt folgt.

3. In der Funktion "appearContent" sollte nach
Code:
tr.rb = tr.gb=tr.bb=0;
ebenfalls eine Zuweisung cl.setTransform(tr); erfolgen.

4. Setze Dir an den Anfang aller Funktionen mal eine trace-Aktion - dann siehst Du, wo sich der Ablauf aufhängt (Debuggen musst Du schon selber ;)).

Gruß
.
 
Zurück