transform 类 使用Matrix或者colortransform属性对 显示对象进行坐标或颜色转换;
- transform和colortransform类
构造函数:ColorTransform(redMultiplier:Number = 1.0, greenMultiplier:Number = 1.0, blueMultiplier:Number = 1.0, alphaMultiplier:Number = 1.0, redOffset:Number = 0, greenOffset:Number = 0, blueOffset:Number = 0, alphaOffset:Number = 0);
新红色值 = (旧红色值 * redMultiplier) + redOffset
新绿色值 = (旧绿色值 * greenMultiplier) + greenOffset
新蓝色值 = (旧蓝色值 * blueMultiplier) + blueOffset
新 Alpha 值 = (旧 Alpha 值 * alphaMultiplier) +
alphaOffset
测试代码:
package { import flash.display.Sprite; import flash.display.MovieClip; import flash.events.MouseEvent; import flash.geom.Transform; import flash.geom.ColorTransform; public class ColorTransformExample extends Sprite{ private var _MC:Sprite; function ColorTransformExample(){ init(); } private function init(){ _MC=new Sprite(); _MC.graphics.beginFill(0xFF0000,1); _MC.graphics.drawRect(0, 0, 100, 100); _MC.graphics.endFill(); _MC.addEventListener(MouseEvent.CLICK,transformColor); addChild(_MC); } private function transformColor(event:MouseEvent){ var rOffset:Number = _MC.transform.colorTransform.redOffset + 25; var bOffset:Number = _MC.transform.colorTransform.redOffset - 25; _MC.transform.colorTransform=new ColorTransform(1,1,1,1,rOffset,0,bOffset,0); trace (_MC.transform.colorTransform.toString()); }
//注意下述错误使用方式,容易进入这个误区,要为colortransform提供不同的参数;
//private function transformColor(e:MouseEvent){ // _MC.transform.colorTransform=new ColorTransform(1,1,1,1,-25,0,25,0); // } }
- transform和Matrix类
Matrix矩阵图如下,一般使用上面两行:

以上的每个字母都有各自的运用意义,分别是:
a = 控制 X 的宽度
b = 控制 Y 的倾斜
c = 控制 X 的倾斜
d = 控制 Y 的高度
tx = 控制 X 坐标位置
ty = 控制 Y 坐标位置
转换后的x,y计算公式:
X’ = a*X + c*Y + tx;
Y’ = b*X + d*Y + ty;
Matrix中还有几个基本函数可以控制,所以也可以不用一直重新定义Matrix类,那就是
Matrix.scale(a,d);
Matrix.translate(tx1, ty2); //这里的tx1和ty1是所要递增或递减原有tx和ty的数值
Matrix.rotate(弧度); //弧度就是 (角度/ 180)* Math.PI
测试代码如下:
package {
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.geom.Transform;
import flash.geom.ColorTransform;
import flash.geom.Matrix;
public class ColorTransformExample extends Sprite{
private var _MC:Sprite;
function ColorTransformExample(){
init();
}
private function init(){
_MC=new Sprite();
_MC.graphics.beginFill(0xFF0000,1);
_MC.graphics.drawRect(0, 0, 100, 100);
_MC.graphics.endFill();
_MC.addEventListener(MouseEvent.CLICK,transformMatrix);
addChild(_MC);
}
private function transformMatrix(event:MouseEvent){
var aOffset:Number = _MC.transform.matrix.a + 0.05;
var bOffset:Number = _MC.transform.matrix.d + 0.05;
_MC.transform.matrix=new Matrix(aOffset,bOffset,0,1,100,100); //和上面一样的道理,必须给Matrix更新参数,而matrix比colorTransform方便,因为有函数自动实现这个递增,只需提供递增量给函数
//var tempMatrix=_MC.transform.matrix;
// tempMatrix.scale(aOffset,bOffset);
// _MC.transform.matrix=tempMatrix;
//var tempMatrix=_MC.transform.matrix;
// tempMatrix.rotate(0.5);
// _MC.transform.matrix=tempMatrix;
//var tempMatrix=_MC.transform.matrix;
// tempMatrix.translate(5,5);
// _MC.transform.matrix=tempMatrix;
}
}
}
ps:Matrix还用于
- BitmapData 对象的
draw()方法 - Graphics 对象的
beginBitmapFill()方法、beginGradientFill()方法或lineGradientStyle()方法
本文介绍了如何使用Flash中的ColorTransform和Matrix类来改变显示对象的颜色和坐标。通过具体实例展示了ColorTransform类如何调整颜色参数,以及Matrix类如何通过缩放、旋转和平移等操作来变换坐标。
375

被折叠的 条评论
为什么被折叠?



