Problems with tween class and colorTransform

Im trying to use the tween class to tween the colorTransform object.

I had the text tweening from grey to blue on rollover, and blue back to grey on rollout, but I’d like to optimize the script so that if you rollout before the tween is finished, it will start tweening from the color that it is at in the tween as opposed to the end color, so it wont be jumpy if you rollout quickly.

this is my code:

[AS]
import flash.filters.GlowFilter;
import mx.transitions.Tween;
import flash.geom.ColorTransform;

MovieClip.prototype.changeColor = function(startColor,endColor){
var target:String = this;
var c:ColorTransform = this.colorInit;
trace (c.rgb.toString(16));
c.rgb = startColor;
var sR:Number = c.redOffset;
var sG:Number = c.greenOffset;
var sB:Number = c.blueOffset;
var clrR:Tween = new Tween(c, “redOffset”, none, sR, sR, 1, true);
var clrG:Tween = new Tween(c, “greenOffset”, none, sG, sG, 1, true);
var clrB:Tween = new Tween(c, “blueOffset”, none, sB, sB, 1, true);
c.rgb = endColor;
var eR:Number = c.redOffset;
var eG:Number = c.greenOffset;
var eB:Number = c.blueOffset;
clrR.continueTo(eR, 1);
clrG.continueTo(eG, 1);
clrB.continueTo(eB, 1);
clrR.onMotionChanged = function() {
var clipColor = new Color(target);
clipColor.setRGB(“0x” + c.rgb.toString(16));
};
}

var overTweens:Function = function(target,arr){
var t:MovieClip = this[target];
t.changeColor(“0x” + t.colorInit.rgb.toString(16),“0x001B30”);
}

var outTweens:Function = function(target,arr){
var t:MovieClip = this[target];
t.changeColor(“0x” + t.colorInit.rgb.toString(16),“0x706E6E”);
}

var navArray:Array = new Array(“link one”, “link two”, “link three”, “link four”, “link five”);
x=0;
tx=0;
var namesArray:Array = new Array();
for (i=0;i<navArray.length;i++){
var niMc:MovieClip = this.createEmptyMovieClip(“navButton”+i,i);
niMc._x = x;
niMc._y = 110;
var nI:TextField = niMc.createTextField(“navText”+i,i,0,0,200,25);
nI.htmlText = navArray*.toUpperCase();
nI.autoSize = “left”;
nI.embedFonts = true;
nI.selectable = false;
nI.html = true;
var nFmt:TextFormat = new TextFormat();
nFmt.color = 0x706E6E;
nFmt.font = “nav_font”;
nFmt.size = 16;
nFmt.letterSpacing = 1;
nI.setTextFormat(nFmt);
tx += niMc._width+10;
x = tx;

//apply glow filter
var filter:GlowFilter = new GlowFilter(0x0A0A0A, .53, 3, 3, 1, 3, false, false);
var filterArray:Array = new Array();
filterArray.push(filter);
nI.filters = new Array(filter);	

niMc.colorInit = new ColorTransform(0, 0, 0, 1, 112, 110, 110, 0);
namesArray.push(niMc._name);

niMc.onRollOver = function(){
	overTweens(this._name,namesArray);
}
niMc.onRollOut = function(){
	outTweens(this._name,namesArray);
}

}[/AS]

So it works if you rollOver and wait for the tween to finish, it even works if the tween is almost finished, but if you rollOver and then rollOut quick, it like changes color to some pinks and cyans… should I tween the alpha multiplier or alpha offset somehow to correct this?