code: function(ratio) {
  			this._super.setRatio.call(this, ratio);
  			var sp = this._firstSP,
  				layer = this._layer,
  				arrayTweens = this._arrayTweens,
  				i, e, p, val, t, proxy;
  			if (sp) {
  				t = this._target;
  				while (sp) {
  					proxy = sp.proxy;
  					t[sp.setter]( (proxy.a !== 1 ? "rgba(" : "rgb(") + (proxy.r | 0) + ", " + (proxy.g | 0) + ", " + (proxy.b | 0) + (proxy.a !== 1 ? ", " + proxy.a : "") + ")");
  					sp = sp._next;
  				}
  			}
  			if (arrayTweens) {
  				i = arrayTweens.length;
  				while (--i > -1) {
  					e = arrayTweens[i];
  					val = e.s + e.c * ratio;
  					e.a[e.i] = (val < 0.000001 && val > -0.000001) ? 0 : val;
  				}
  				for (p in this._arrayProps) {
  					this._target[p](this._arrayProps[p]);
  				}
  			}
  			if (layer && !layer._gsDraw) {
  				_layersToDraw.push(layer);
  				layer._gsDraw = true; //a flag indicating that we need to draw() this layer as soon as all the tweens have finished updating (using a "tick" event listener)
  				if (!_listening) {
  					_ticker.addEventListener("tick", _onTick);
  					_listening = true;
  				}
  			}
  		}
docs: called each time the values should be updated, and the ratio gets passed as the only parameter (typically it's a value between 0 and 1, but it can exceed those when using an ease like Elastic.easeOut or Back.easeOut, etc.)