Flash中步入Matrix函数
2008-04-02 10:45:36来源:互联网 阅读 ()
看到标题也许很多数学不好或中学时上课打盹的朋友会感到反感,但放心的是在这里的Matrix已简化了很多琐碎的步骤,也不用大家拿一张纸拼命的做计算。对想制作游戏的朋友也是必学的路程,所以大致上明白了运用的思路就能够说掌控了技巧。
在字典中的说明不够充分让大家去理解,所以开始还是要重复说明一下。Matrix矩阵就像个数组,排列方式是以列和行组成。在flash 8中所提供的是3 x 3矩阵,3x3的矩阵能够定义出一个3D计算,但在Flash 8中只供2D的计算,即 x 和 y 的计算,那么我们来看看这个矩阵的定义
以上的每个字母都有各自的运用意义,分别是:
b = 控制 Y 的倾斜
c = 控制 X 的倾斜
d = 控制 Y 的高度
tx = 控制 X 坐标位置
ty = 控制 Y 坐标位置
var myMatrix:Matrix = new Matrix(a, b, c, d, tx, ty); //开始定义Matrix类
当中的a, b, c, d, tx, ty能够直接定义。再来我们把这段引入例子,以证实及帮助了解以上各个参数的运用。
步骤1:在场景上建立一个MC,即画个方形后按F8选择MovieClip(影片),定义实例名为mc
步骤2:到场景第一帧开始我们的代码
Matrix 必须配合 Transform 才能实现出所定义的效果,不多说了开始看看代码吧
import flash.geom.Transform; //到入Transform类包
var myMatrix:Matrix = new Matrix(1,0,0,1,100,100); //参数定义为宽度比例为1,无任何的倾斜,高度比例1,xy坐标为100
var myTransform:Transform = new Transform(mc); //Transform对象为场景上的mc
myTransform.matrix = myMatrix; //赋予transform的matrix函数为我们所定的myMatrix类
那么接下来测试就能够看到结果了,看不出什么效果??那么我来换换Matrix的参数值成
var myMatrix:Matrix = new Matrix(1,1,0,1,100,100); //第二参数改为1
这样测试是不是就看到我们的b影响了mc的形状呢??Matrix的运用就是这样,很简单吧??所以很多东西不要以为很困难,其实都很简单。
再来我们要深入一点,去了解Matrix的计算,知其一不知其二也是无法正确掌控好运用的。Matrix的计算其实很简单,就只有两行的公式:
Y’ = b*X d*Y ty;
意思就是
新坐标X = a * 现有X坐标 c * 现有Y坐标 常量tx;
新坐标Y =b * 现有X坐标 d * 现有Y坐标 常量ty;
我们把这个例子代入公式中
a = 2, b = 0, c = 0, d = 1, tx = 0, ty = 0
Y’ = 0x 1y 0;
X’ = 2x;
Y’ = y;
能够知道下一个新的X值会是现在X的两倍,而Y保持不变,在一开始已说了a的变化会影响宽度,那么出来的形状就是宽度为现有的两倍了。
在Matrix中更有几个基本函数能够控制,所以也能够不用一直重新定义Matrix类,那就是
Matrix.translate(tx1, ty2); //这里的tx1和ty1是所要递增或递减原有tx和ty的数值
Matrix.rotate(弧度); //弧度就是 (角度/ 180)* Math.PI
基本上只要代入公式就能够得到答案,所以我只说明rotate函数的计算
Math.rotate((50/180)*Math.PI) //这里是需要旋转 50 度
公式为:
Y’ = -sin(b)*X cos(d)*Y ty;
Y’ = -sin(50)*X cos(50)*Y ty;
X’ = 0.64*X 0.76*Y tx;
Y’ = -0.76*X 0.64*Y ty;
得到的这个答案再把现有坐标x和y代入就能够求出新坐标了
那么我们来验证a,b,c,d的数值是否正确吧,打开一个新的场景,在帧上输入
import flash.geom.Matrix;
var myMatrix:Matrix = new Matrix();
myMatrix.rotate((50/180)*Math.PI);
trace(myMatrix.toString()); //看看当中的a,b,c,d是不是也是这个数值呢?
好啦。。到了最后的部分也就能够完结这篇教程了,最重要的一点也是很多人百思不解的问题是:
这点就是Flash提供的方便了,其实为何需要配合Transform的关键就是在此,Transform指定了元件之后会得到4个角的坐标。所以我们使用Transform.matrix函数就是让transform把Matrix的公式代入每个角的坐标。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: Flash出色实例:爆炸效果动画
下一篇: 解决MP3不能导入Flash的一种方法
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash