import flash.filters.ColorMatrixFilter; // class mmt.SaturationManager { // function SaturationManager() { // Do Nothing } // public static function setSaturation(object:MovieClip, amount:Number):Void { amount = amount/100; var colorFilter = new ColorMatrixFilter(); var redIdentity = [1, 0, 0, 0, 0]; var greenIdentity = [0, 1, 0, 0, 0]; var blueIdentity = [0, 0, 1, 0, 0]; var alphaIdentity = [0, 0, 0, 1, 0]; var grayluma = [.3, .59, .11, 0, 0]; var colmatrix:Array = new Array(); colmatrix = colmatrix.concat(interpolateArrays(grayluma, redIdentity, amount)); colmatrix = colmatrix.concat(interpolateArrays(grayluma, greenIdentity, amount)); colmatrix = colmatrix.concat(interpolateArrays(grayluma, blueIdentity, amount)); colmatrix = colmatrix.concat(alphaIdentity); colorFilter.matrix = colmatrix; object.filters = [colorFilter]; // function interpolateArrays(ary1:Array, ary2:Array, t:Number):Object { var result:Array = (ary1.length>=ary2.length) ? ary1.slice() : ary2.slice(); var i = result.length; while (i--) { result[i] = ary1[i]+(ary2[i]-ary1[i])*t; } return result; } } }