|
首页 | 名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
因为工作忙,所以很久没有出来写教程了。今天就来写个目前Flash 8所提供的新函数,在中文网站中也还没有看到的,这应该比较新鲜吧 看到标题也许很多数学不好或中学时上课打盹的朋友会感到反感,但放心的是在这里的Matrix已经简化了很多琐碎的步骤,也不用大家拿一张纸拼命的做计算。对想制作游戏的朋友也是必学的路程,所以大致上明白了运用的思路就可以说把握了技巧。 在字典中的说明不够充分让大家去理解,所以开始还是要重复说明一下。Matrix矩阵就像个数组,排列方法是以列与行组成。在flash 8中所提供的是3 x 3矩阵,3x3的矩阵可以定义出一个3D计算,但在Flash 8中只供2D的计算,即 x 和 y 的计算,那么我们来看看这个矩阵的定义
a = 控制 X 的宽度
b = 控制 Y 的倾斜 c = 控制 X 的倾斜 d = 控制 Y 的高度 tx = 控制 X 坐标位置 ty = 控制 Y 坐标位置 import flash.geom.Matrix; //导入类包
var myMatrix:Matrix = new Matrix(a, b, c, d, tx, ty); //开始定义Matrix类 当中的a, b, c, d, tx, ty可以直接定义。再来我们把这段引入例子,以证实及帮助了解以上各个参数的运用。 步骤1:在场景上建立一个MC,即画个方形后按F8选择MovieClip(影片),定义实例名为mc Matrix 必须配合 Transform 才能实现出所定义的效果,不多说了开始看看代码吧 import flash.geom.Matrix; //导入Matrix 类包
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的计算其实很简朴,就只有两行的公式: X’ = a*X + c*Y + tx;
Y’ = b*X + d*Y + ty; 意思就是
新坐标X = a * 现有X坐标 + c * 现有Y坐标 + 常量tx; 我们把这个例子代入公式中
a = 2, b = 0, c = 0, d = 1, tx = 0, ty = 0 X’ = 2x + 0y + 0;
Y’ = 0x + 1y + 0; X’ = 2x; Y’ = y; 可以知道下一个新的X值会是目前X的两倍,而Y保持不变,在一开始已经说了a的变化会影响宽度,那么出来的外形就是宽度为现有的两倍了。 在Matrix中还有几个基本函数可以控制,所以也可以不用一直重新定义Matrix类,那就是 Matrix.scale(a,d);
Matrix.translate(tx1, ty2); //这里的tx1和ty1是所要递增或递减原有tx和ty的数值 Matrix.rotate(弧度); //弧度就是 (角度 / 180)* Math.PI Math.rotate((50/180)*Math.PI) //这里是要求旋转 50 度 公式为: X’ = cos(a)*X + sin(c)*Y + tx;
Y’ = -sin(b)*X + cos(d)*Y + ty; X’ = cos(50)*X + sin(50)*Y + tx;
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代入就可以求出新坐标了 import flash.geom.Matrix; 求出一个X和Y,为何会能够让元件转动呢?这只是一个坐标啊??最多也只是控制坐标点,怎么那么神奇??
这点就是Flash提供的方便了,其实为何需要配合Transform的要害就是在此,Transform指定了元件之后会得到4个角的坐标。所以我们使用Transform.matrix函数就是让transform把Matrix的公式代入每个角的坐标。
所以公式中的x和y就是每个角的坐标,坐标代入公式就直接取得了新的坐标值而达到旋转换形等的功能。这是不是简朴化了很多呢??总比在之前版本还要自己定义函数。
好啦。。此篇教程结束。希望转载的朋友附上作者名字,谢谢。
返回类别: Flash教程 上一教程: FLASH新闻展示 下一教程: 使用Flash MX的3个小技巧 您可以阅读与"Flash中步入Matrix函数"相关的教程: · Flash AS学习:给flash加一个trim()函数 · Flash制作动态三角函数图课件 · FLASH函数的基本概念 · [讨论]函数的封装解释 · 利用三角函数实现出色效果 |
快精灵印艺坊 版权所有 | 首页会员中心在线印刷在线编辑付款方式索取样品设计指南连锁门店 |