论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash教程
Tag:flash cs,flash 8,鼠绘,as,手绘,工具,文字,loading,入门,初学,mc,影片剪辑,声音,mtv,游戏,引导,遮罩,菜单,补间,广告条,时钟,视频教程

速度和加速度在flash中的描述

文章类别:Flash | 发表日期:2008-9-21 15:10:53

  

在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;

上一篇:{技巧}真正屏蔽FLASH右键方法 人气:3089
下一篇:{技巧}ActionScript 3.0垃圾回收 人气:2893
视频教程列表
文章教程搜索
 
Flash推荐教程
Flash热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058