返回顶部

[文摘] 《Making Things Move》 flash math 函数应用

[复制链接]
awagink 显示全部楼层 发表于 2008-1-7 10:20:18 |阅读模式 打印 上一主题 下一主题
第三章 动画中三角函数的应用
这一章介绍了
1 什么是三角法
2 角度
3 Flash中的一些三角函数
4 旋转
5 波
6 圆和椭圆
7 毕达哥拉斯定理(就是我们说的勾股定理)
8 两点间的距离
9 总结了本章的一些有用的公式
有一些还是跳过去吧,只记录一下和AS相关的,像三角法说了些,一个三角形有三条边之类的就略去了。
弧度和角度:
来测量一个角是用的单位是度和弧度,对于度你应该相当熟悉了,你也可以画出45度90度的角,180度是一条直线,360是一个圆…………….
1弧度大约等于57.2958度
90度是π/2,180度是π,360度是2π
在Flash里π用Math.PI来表示
在用函数进行计算运动轨迹的时候我们需要用弧度,而描述它的旋转的时候我们需要用角度,在Flash里角度和弧度的转换公式是这样的:
radians = degrees * Math.PI / 180
degrees = radians * 180 / Math.PI
Flash中的三角函数:
Math.sin,Math.cos,Math.tan,Math.asin,Math.acos,Math.atan.Math.atan2
Rotation:
利用Math.atan2只需要知道一个坐标,dx和dy是以arrow的注册点为原点的坐标




程序代码
onEnterFrame = function(){
   var dx = _xmouse - arrow._x;
   var dy = _ymouse - arrow._y;
   var radians = Math.atan2(dy, dx);
   arrow._rotation = radians * 180 / Math.PI;
}



Flash动画
在线播放




Waves:
角度从0-360度或者0-2pi,值从-1—1之间.



如果乘以某个值,例如50,则值是-50-50之间,在场景中可以指定他的运动位置在加上一个值例如200,则范围是250-150之间。

程序代码
angle = 0;
onEnterFrame = function(){
      ball._y = 200 + Math.sin(angle) * 50;
      angle += .1;
}



Flash动画
在线播放




200是中心点的位置,50是幅度范围,0.1是速度,这样我们可以更加形象的描述


程序代码
angle = 0;
centerY = 200;
range = 50;
speed = .1;
onEnterFrame = function(){
      ball._y = centerY + Math.sin(angle) * range;
      angle += speed;
}




可以在进行一些调整把X的移动也加上。(我们知道如果是物理中的波的话X方向是没有移动的,波传递的只是能量,它只在原地上下震动,这里只是加一个效果,或者叫一个轨迹吧。)

程序代码
angle = 0;
centerY = 200;
range = 50;
xspeed = 1;
yspeed = .05;

onEnterFrame = function(){
      ball._x += xspeed;
      ball._y = centerY + Math.sin(angle) * range;
      angle += yspeed;
}


Flash动画
在线播放




同样的原理,你可以应用到各种属性


程序代码
angle = 0;
centerScale = 100;
range = 50;
speed = .1;
onEnterFrame = function () {
    ball._xscale = ball._yscale=centerScale+Math.sin(angle)*range;
    angle += speed;
};



Flash动画
在线播放




Waves with the drawing API:
结合画线函数lineTo,画出正弦波的图



程序代码
angle = 0;
centerY = 200;
range = 50;
xspeed = 1;
yspeed = .05;

moveTo(0, 200);
lineStyle(1,0, 100);
x = 0;

onEnterFrame = function(){
      x += xspeed;
      y = centerY + Math.sin(angle) * range;
      lineTo(x, y);
      angle += yspeed;
}



Flash动画
在线播放




英语基础差,读起来太费劲了,简直就是通过AS来学英语...................

过会在写第三章剩下的部分,得先给校长做演示文稿了,很头疼啊。

FROM: http://lovejulia.cn/blog/article.asp?id=104
您需要登录后才可以回帖 登录 | 注册

本版积分规则

纳速健身网成立于2006年8月,是国内优秀健身运动网站,现拥浏览人数超30万。网站是集养生、武术、太极拳和健身气功等多种健身项目于一体的多功能交流平台。平台提供大量优质的教学视频、伴奏音乐(太极拳晨练音乐,广场舞音乐,健身气功音乐)、图文教程、运动科普和经验分享,为健身爱好者提供完善的运动指导平台。
  • 纳速QQ群乙:151815303
  • 纳速QQ群丙:79104490
  • 微信交流群:微信好友搜索【nasuwang】加小纳微信进群交流健身知识,备注【纳速】
  •                     或者扫描页面底部右侧二维码添加小纳微信>>>
  • 微信公众号

  • 微信群客服交流

  • Copyright © 2006-2021, 纳速健身网. | | 辽ICP备13002388号-1 辽公安网备21050202000005号公安网备号 纳速武术-乙 QQ