iceman
говнокодер
ООП в JS
первая итерация выполнилась (по таймеру)... на следующей валятся ошибки this.config - undefined
почему, не могу разобраться >:-[
-~{}~ 27.04.10 10:35:
кажись я понял, проблема в setTimeout
если прописать setTimeout(fader._fade, this.config.Time);
fader - это var fader = new witFader('fadeBtn');
НО. я же заранее не могу знать имя объекта в программе... как решить данную проблему?
PHP:
function witFader (ElementId) {
this.elementId = ElementId
this.startColor = "#fffb91"
this.finishColor = "#FFFFFF"
this.RGB = {
start : this.startColor.replace("#","").match(/.{2}/g),
fininsh : this.finishColor.replace("#","").match(/.{2}/g),
startPercent : 0,
finishPercent : 0,
R : 0,
G : 0,
B : 0
}
this.config = {
Time : 50,
N : 30,
I : 0
}
}
witFader.prototype._fade = function (i) {
alert(i);
this.config.I = ++i; //изменяем индекс промежуточного цвета
document.getElementById(this.elementId).style.backgroundColor = this._getMiddleColor();
if (this.config.I < this.config.N) setTimeout(function(){this._fade(this.config.I);}, this.config.Time);
}
witFader.prototype.fade = function() {
this._fade(0);
}
witFader.prototype._getMiddleColor = function() {
/*процент содержания конечного цвета в текущем промежуточном цвете;
изменяется от 0 (не включая 0) до 1 (1 = 100%)*/
this.RGB.finishPercent = this.config.I/this.config.N;
/*процент содержания начального цвета в текущем промежуточном цвете;
изменяется от 1 до 0 (1 = 100%) */
this.RGB.startPercent = 1 - this.RGB.finishPercent;
//вычисляем значения красного, зеленого, синего промежуточного цвета
this.RGB.R = Math.floor( ('0x'+this.RGB.start[0]) * this.RGB.startPercent + ('0x'+this.RGB.fininsh[0]) * this.RGB.finishPercent );
this.RGB.G = Math.floor( ('0x'+this.RGB.start[1]) * this.RGB.startPercent + ('0x'+this.RGB.fininsh[1]) * this.RGB.finishPercent );
this.RGB.B = Math.floor( ('0x'+this.RGB.start[2]) * this.RGB.startPercent + ('0x'+this.RGB.fininsh[2]) * this.RGB.finishPercent );
return 'rgb('+this.RGB.R+ ',' + this.RGB.G + ',' + this.RGB.B +')';
}
var fader = new witFader('fadeBtn');
fader.fade();
почему, не могу разобраться >:-[
-~{}~ 27.04.10 10:35:
кажись я понял, проблема в setTimeout
если прописать setTimeout(fader._fade, this.config.Time);
fader - это var fader = new witFader('fadeBtn');
НО. я же заранее не могу знать имя объекта в программе... как решить данную проблему?