Math类为我们提供了很多数学计算函数,今天我们来了解一下三角函数。三角函数是研究三角形的边与角的联系的学科。希望不要看到这个题目就开跑,不要怕,往下看,你会复习到初中所学的三角课程,同时你会感觉到三角函数会很基本。当然所要介绍的只是正弦,余弦和反正切三个常用的函数。
Flash为什么要研究三角函数呢?看看下面的图:
![Flash AS入门教程第七课:影片剪辑第11节三角函数[多图]图片1](/Files/BeyondPic/2009-12/13/09121312524130160.jpeg)
在flash坐标体系中(即舞台上),放上一个点a,然后通过a点将a点的x,y长度画出来,并将两条线的端点连起来,你看一个直角三角形出现了。这样三角函数就有研究头了。这个三角形跟这个点有什么联系呢?最明显的就是这个三角形的两条直角边b,c确定了a点的位置。除了两条直角边以外,还有斜边d,还有一个角e, (另外两个角我们不研究)。这些边和角之间的联系就是三角函数。我们说过只研究三个函数:
sin(e) = c/d; 对边除以斜边
cos(e) = b/d; 邻边除斜边
e = atan(c/b) 而flash为我们提供了一个更为合理的反正切函数:atan2(y,x)
即: e = atan2(y,x)
从上面的图中可以看出,实际上b就等于点a的x,c就等于点a的y.这换一下,就成:
sin(e)=y/d;
cos(e) = x/d;
将这两个式子变一下就成:
y = d*sin(e);
x=d*cos(e); 对这两个式子,须要说明的是:角e在三角函数的运行中必须运用弧度制,这与我们习惯的角度制有所不同,所以我们须要记得角度弧度转换的公式:
编缉推选阅读以下文章
- Flash AS入门教程第七课:影片剪辑第12节运用颜色
- Flash AS入门教程第七课:影片剪辑第10节用AS绘图
- Flash AS入门教程第七课:影片剪辑第9节运用滤镜
- Flash AS入门教程第七课:影片剪辑第8节实现补间动画
- Flash AS入门教程第七课:影片剪辑第7节实现过渡
- Flash AS入门教程第七课:影片剪辑第6节运用遮罩
- Flash AS入门教程第七课:影片剪辑第五节_拖动与碰撞检测
- Flash AS入门教程第七课:影片剪辑第四节深度
- Flash AS入门教程第七课:影片剪辑第三节控制时间轴
- Flash AS入门教程第七课:影片剪辑第二节加载swf文件
[cose]角度弧度转换公式:
角度 = 弧度*180/Math.PI;
弧度 = 角度*Math.PI/180;[/code] PI是园周率,即3.14159,它属于Math类写法为:Math.PI.三角函数也属于Math类。所以上面的公式正确写法是:
x= d*Math.cos(e) e为弧度表示
y=d*Math.sin(e) 三角函数的知识差不多复习这么多就行了,是不是很基本呢?
园周运动:
上面介绍的三角函数有什么用呢?我们还是来看看前面那个图,如果直角三角形的斜边长度固定不变,让角e不断地加大,会是个什么效果呢?很容易理解它出现的是下面的效果:
编缉推选阅读以下文章
- Flash AS入门教程第七课:影片剪辑第12节运用颜色
- Flash AS入门教程第七课:影片剪辑第10节用AS绘图
- Flash AS入门教程第七课:影片剪辑第9节运用滤镜
- Flash AS入门教程第七课:影片剪辑第8节实现补间动画
- Flash AS入门教程第七课:影片剪辑第7节实现过渡
- Flash AS入门教程第七课:影片剪辑第6节运用遮罩
- Flash AS入门教程第七课:影片剪辑第五节_拖动与碰撞检测
- Flash AS入门教程第七课:影片剪辑第四节深度
- Flash AS入门教程第七课:影片剪辑第三节控制时间轴
- Flash AS入门教程第七课:影片剪辑第二节加载swf文件
我选了6张作品,导入到库中。然后,新建一个MC,共6个关键帧,每个关键帧,放一张图片,大小统一调为150x200.然后在库中右击MC>“连接”,点中“为ActionSpript运行时导出“前的钩,在标识符一栏内输入:imge.
回到主场景,打开帧动作面板,输入:
var r = 200;
var v = 1;
for (var i = 1; i<=6; i++) {
attachMovie("imge", "mc"+i, i);
_root["mc"+i].gotoAndStop(i);
_root["mc"+i].cita = i*60;
_root["mc"+i]._y = 200;
}
onEnterFrame = function () {
v = (275-_root._xmouse)/25;
for (var i = 1; i<=6; i++) {
with (_root["mc"+i]) {
cita += v;
_alpha = 50+(100+100*Math.sin(cita/180*Math.PI))/4;
_xscale = 100*Math.sin(cita/180*Math.PI)*_alpha/100;
_yscale = 75+(100+100*Math.sin(cita/180*Math.PI))/8;
_x = 75+r-r*Math.cos(cita/180*Math.PI);
}
_root["mc"+i].swapDepths(Math.round(_root["mc"+i]._xscale));
}
}; 代码剖析:
首先通过一个for循环,将图片元件加载6次,每一次加载后,让它停在不同的帧上,这样舞台上实际上就有6张不同的图片了,这是一个非常有趣的要领,值得学习。同时为每张图片配置了一个不同的原始量Cita,共6张图片,一个园周是360度除以6等于60,这样6张图片被设为i*60,即均匀分布。最后将图片的y坐标固定在200,因为图的旋转实际就是图片从左到右往返运动而已,y坐标是不变的。
编缉推选阅读以下文章
- Flash AS入门教程第七课:影片剪辑第12节运用颜色
- Flash AS入门教程第七课:影片剪辑第10节用AS绘图
- Flash AS入门教程第七课:影片剪辑第9节运用滤镜
- Flash AS入门教程第七课:影片剪辑第8节实现补间动画
- Flash AS入门教程第七课:影片剪辑第7节实现过渡
- Flash AS入门教程第七课:影片剪辑第6节运用遮罩
- Flash AS入门教程第七课:影片剪辑第五节_拖动与碰撞检测
- Flash AS入门教程第七课:影片剪辑第四节深度
- Flash AS入门教程第七课:影片剪辑第三节控制时间轴
- Flash AS入门教程第七课:影片剪辑第二节加载swf文件
for (var i = 1; i<=6; i++) {
attachMovie("imge", "mc"+i, i);
_root["mc"+i].gotoAndStop(i);
_root["mc"+i].cita = i*60;
_root["mc"+i]._y = 200;
} 接下来的代码可能不是太好理解,请记得一点,正弦,余弦函数的值是从1到-1来回变化的,这一点很主要,在下面的代码中充分地运用了这个原理。通过 onEnterFrame事件使动画不断重复,每重复一次,每一个图片的Cita加上鼠标x坐标与舞台中线的差值除25,也就是说配置了一个增量,所以这 25可以自行改动,值越大转得越慢。
onEnterFrame = function () {
v = (275-_root._xmouse)/25;
for (var i = 1; i<=6; i++) {
with (_root["mc"+i]) {
cita += v; 接下来配置图片的透明度,来理解一下这句:
_alpha = 50+(100+100*Math.sin(cita/180*Math.PI))/4;
首先看:Math.sin(cita/180*Math.PI)这个函数的值上面说了是从1到-1来回变化的。那么100*Math.sin(cita /180*Math.PI)10到-100来回变化,100+100*Math.sin(cita/180*Math.PI))就是200到0之间的变化了,(100+100*Math.sin(cita/180*Math.PI))/4就是50到0之间变化了,50+ (100+100*Math.sin(cita/180*Math.PI))/4;就是50到100之间变化了。这一句的作用就是使透明度在正面时为 100,转到背面时为50.
接下来:
_xscale = 100*Math.sin(cita/180*Math.PI)*_alpha/100;
100*Math.sin(cita/180*Math.PI) 的值是100到-100,_xscale属性设为-100时的效果是水平翻转,这就形成了在正面的背面方向不一样的效果,也行成了在两端时的翻转效果。*_alpha/100;应该是让图片的正反面与透明度同步。
下一句:
_yscale = 75+(100+100*Math.sin(cita/180*Math.PI))/8;
算得出来这是让图片的高在75到100之间变化,即在背面时高度要小一些。
下一句:
_x = 75+r-r*Math.cos(cita/180*Math.PI);
可以算出等号后面的式子值为75到475之间变化,这就确平方和了图片在75到475间左右移动。
最后一句:
_root["mc"+i].swapDepths(Math.round(_root["mc"+i]._xscale));
深度交换,让图片在最大时(正面),在最上面,以形成正面图片遮住背面图片的效果。
编缉推选阅读以下文章
- Flash AS入门教程第七课:影片剪辑第12节运用颜色
- Flash AS入门教程第七课:影片剪辑第10节用AS绘图
- Flash AS入门教程第七课:影片剪辑第9节运用滤镜
- Flash AS入门教程第七课:影片剪辑第8节实现补间动画
- Flash AS入门教程第七课:影片剪辑第7节实现过渡
- Flash AS入门教程第七课:影片剪辑第6节运用遮罩
- Flash AS入门教程第七课:影片剪辑第五节_拖动与碰撞检测
- Flash AS入门教程第七课:影片剪辑第四节深度
- Flash AS入门教程第七课:影片剪辑第三节控制时间轴
- Flash AS入门教程第七课:影片剪辑第二节加载swf文件
读库教程网文章由网络收集后整理发布,文章发布人拥有该内容的所有权力及责任!
如果你喜欢这页,可以按Ctrl+D收藏起来。







