| 设置首页 收藏站点 关于我们 联系站长

 | 首页 | 教程 | 脚本 | 博客 | 娱乐 | 图库 | 音效 | 软件 | 教案 | 论文 | 试题 | 课件 | 影视 | 

|| 您现在的位置: 中国课件资源网 >> 教程 >> Flash_MX >> 正文
普通教程flash十万个为什么
普通教程[组图]FLASH教程下载
普通教程如何在 Director 中播
普通教程搜索引擎优化(SEO)技
普通教程首页根据分辨率的大小
普通教程flash中利用setMask(
普通教程flash怎么样实现在让
普通教程flash菜单中缓冲移动
普通教程JS实现浏览器菜单命令
普通教程Flash对联广告及关闭
推荐教程flash实现快进10帧和
推荐教程[组图]PPT课件制作:
推荐教程[组图]用Flash制作螺
推荐教程[组图]Flash制作视觉
推荐教程AW课件制作实例:游戏
推荐教程[图文]AW课件制作实例
推荐教程[图文]PPT特效动画实
推荐教程FLASH调用外部文件的
推荐教程[组图]动画短片制作常
推荐教程[组图]硕思闪客精灵M
没有相关教程

鼠绘教程五:凉椅上

鼠绘教程四:忧郁的

鼠绘教程三:挥手的

鼠绘教程二:扮酷的

速度和加速度在flash中的描述           ★★★
速度和加速度在flash中的描述
副标题:
作者:佚名 文章来源:本站原创 点击数: 更新时间:2008-7-19 11:18:40
本文由课件大师网站收集、整理或撰写,转载请署原作者名,并请注明出处,谢谢合作!

在flash中,我们习惯做的补间动画,如果不加缓动,在前后两帧中改变元件的位置,就可以看到元件的移动动画,具体说是元件匀速运动的动画。

在flash中,是将元件在每帧设置一个新的位置来实现动画的,如让一个元件从位置0运动到位置10,设flash在每帧设置元件坐标相差为1,那么在第一帧时元件在位置0,第二帧时在位置1,第三帧时在位置2......这样就看到元件的匀速运动了,这个就是坐标差就是速度了。下面来看看用代码来实现的,物体匀速移动,设舞台上有一小球ball_mc,空剪辑ctrl_mc:

//使小球沿x轴以每帧2像素的速度匀速运动
//定义x方向的速度
var vx = 2;
ctrl_mc.onEnterFrame = function(){
    ball_mc._x+=vx;
}
//使小球沿y轴以每帧2像素的速度匀速运动只需将上面的_x属性换成_y属性

上面是给定x或者y方向的速度大小,让flash来实现物体运动,现在给定一个任意角度angle,和一个任意大小v的速度,如何让flash来实现物体的运动呢?~思路如下:

将速度v从角度angle方向分解到flash坐标系统的x,y方向,然后再分别将x,y方向的速度加到物体的x,y坐标上。代码如下:如果v=5,angle=30,则就是小球沿30度角的方向以每帧5个像素运动。

var angle:Number;
var v:Number;
ctrl_mc.onEnterFrame = function(){
    var radians = angle*Math.PI/180;
    //分解速度
    var vx = v*Math.cos(radians);
    var vy = v*Math.sin(radians);
    ball_mc._x += vx;
    ball_mc._y += vy;
}

现在要使物体加速运动,那又如何实现呢~如:使小球初速度为0,以加速度为2px/f*f的沿x方向运动。思路如下:

在flash中要实现加速度,可以在每帧加入一个常数到速度,这样就实现了加速度,如:

v=0;
a=2;
ctrl_mc.onEnterFrame = function(){
    v+=a;
    ball_mc._x+=v;
}
//在y方向同理。

物理中我们知道,给物体施加一个力,对物体就会产生一个加速度,现在我们假设给定一个方向angle,给定一个力force(如:在30度方向上给小球施加一个10N的力),那么flash又该如何描述小球运动呢?~设小球初始速度为0;

思路:仿照速度,可以将力分解为x,y方向,分别加到x,y方向的速度,然后再将速度分别加到球的x,y方向的坐标上。
var angle:Number;
var force:Number;
var vx = 0;
var vy = 0;
ctrl_mc.onEnterFrame = function(){
    var radians = angle*Math.PI/180;
    //分解力,得出x,y方向的加速度
    var ax = force*Math.cos(radians);
    var ay = force*Math.sin(radians);
    //将加速度分别加入速度上
    vx += ax;
    vy += ay;
    //加入坐标
    ball_mc._x += vx;
    ball_mc._y += vy;
}

总结:要实现物体匀速运动,只需将速度v沿x,y轴分解所得的vx,vy分别加入到物体的_x,_y属性,即:vx = v*Math.cos(angle);vy=v*Math.sin(angle);ball_mc._x+=vx;ball_mc._y+=vy;要实现物体的加速运动,只需将加速度a沿x,y轴分解所得的ax,ay分别加入到物体速度在x,y轴的分量vx,vy上,然后再将vx,vy分别加到物体的_x,_y属性,即:ax = a*Math.cos(angle);ay=a*Math.sin(angle);vx+=ax;vy+=ay;ball_mc._x+=vx;ball_mc._y+=vy;


教程录入:潜龙在野    责任编辑:潜龙在野 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    (只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 |

    网站维护:潜龙 QQ:20885537 Email:WebMaster#PowerCai.Com备案编号:渝ICP备05001729号