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
}
};
}