详细内容
 
当前位置
物体flash课件制作中的运动符合物理规律
作者:管理员    发布于:2012-08-01 22:50:14    文字:【】【】【

物体flash课件制作中的运动符合物理规律

首先,我们可以来看一下关于平抛物体运动的动画的制作,这是一个分运动与合运动的问题,通过这个例子我们可以感受一下符合物理规律动画的基本制作过程。

物理flash课件制作的话题真的是很多很多,网上的flash课件制作也是遍地都是,但是笔者在观看了很多flash课件后发现,有些动画虽然画面和制作都很漂亮,但是物体在运动过程中并没有完全符合物体的运动规律,这可能是由于制作者在制作物体的运动时直接使用了flash中的动画效果导致的。经过笔者多年的flash动画制作经验,其实自从flash5以后,flash制作中就多了一个不可缺少的利器,那便是ActionScript编程,在最近发布的flash8中,已经发布了ActionScript2.0,这样用ActionScript对物体进行编程,使物体的运动符合物理规律便更加简便。以下,笔者便通过几个简单的例子,来表现一下ActionScript的强大功能。

第一步,新建一个动画,打开“插入”,“新建元件”来新建一个“影片剪辑”,取名ball,这里我们简单的画一个小球。然后再同样新建一个“按钮”,随便画一个按钮即可。

第二步,回到“场景”,按“Ctrl”+“L”打开“库”,将我们刚才新建的两个物体拖入“场景”中。并且分别取名为“ball”,和“start_btn”。

第三步,点击第一帧,打开“动作”,编辑第一帧的动作。这里笔者建议新建一个层,并且取名为action,我们的ActionScript语句主要都写在这里,不过因为这个例子中只有一帧、一层,所以没有关系。

在“动作”中编写帧的动作,在笔者完成的动画中,物体的运动基本上都是在这里编写的。这个例子的程序如下:

var g=100,v0=50;

//定义重力加速度的值和初速度,因为本例中将场景中的10个像素当做实际中的一米,//所以其实定义的是g=10m/s2,v0=5m/s;当然这两个值可以随意定义,也可以在动画中另//外赋值。

function btn_start(){     //定义start_btn按下时的动作

      st=1;            //新建一变量并赋值为1,作为开始的指令

    t0=t;           //读取按钮按下时的时刻,在动画中有一个时间参数t

      ball_x0=getProperty("ball",_x);     //读取当时小球在x方向上的位置

      ball_y0=getProperty("ball",_y);     //读取当时小球在y方向上的位置

      }

function updateTimer():Void {    

//时间更新函数,这个函数是整个动画的关键,每更新一次时间,便计算一次物体的位

//置,这样便可以使物体的动作符合我们给它制定的规律。也就是在这里,我们赋予了

//物体运动规律,以使它遵守物理规律!

 t= getTimer()/1000;     //读取从打开动画到此刻的时间,因为它的单位是ms,所

//以这里除了1000

 if(st==1)              //如果按钮按下

 {

       t1=t-t0;                     //t1为此刻与按钮按下时刻的时间间隔

       ball_x=ball_x0+v0*t1;        //计算物体此刻的x位置

       ball_y=ball_y0+g*t1*t1/2;     //计算物体此刻的y位置

 setProperty("ball",_x,ball_x);    //使物体的在x上位于我们计算出来的位置处

 setProperty("ball",_y,ball_y);    //使物体的在y上位于我们计算出来的位置处

 }

}

var intervalID:Number = setInterval(updateTimer, 100);  //设定时间更新频率,

//这里是每100ms更新一次

start_btn.onPress=btn_start;            //start_btn按钮按下时运行函数btn_start

到这里,整个动画便制作完毕。我们不难发现,整个动画只有一帧,而且几乎所有的运动规律都是在function updateTimer()这个函数里完成。其实,我们也可以看到笔者制作的想法,用updateTimer()给与整个场景一个时间,就像真实世界里的时间的流动。当然真实世界里时间的流动是连续的,而我们这里是用var intervalID:Number = setInterval(updateTimer, 100)这句函数来定义的,当然我们为了使运动更加流畅,可以使更新时间短一些。有了时间,我们便可以赋予场景中的物体以运动规律,使它符合物理规律。比如这里的“ball_x=ball_x0+v0*t1” 和“ball_y=ball_y0+g*t1*t1/2”,便是平抛运动里水平方向上做匀速直线运动,竖直方向上做自由落体运动的规律。当然,除了平抛运动,我们也可以编写各种物理学里的运动规律,甚至是一些变加速的运动,总之,只要我们能找到这个物体的运动规律,我们便可以在我们的动画里让物体按照给定的规律运动,在这里笔者便不再一一列举。

有了flash中强大的ActionScript,我们便可以发挥我们的想象力,赋予我们的物理动画课件以新的生命。课件不仅仅是上课时的演示,更可以是真实世界的反映,甚至可以在动画中创造出新的“世界”,并且让我们的学生参与进来,这样,不仅可以大大丰富我们的课堂,而且也可以增加学生的兴趣。这便是笔者的一些简单的想法,拿出来和大家一起交流,希望能得到批评和指正。

脚注信息
版权所有 Copyright(C)2008-2015 龙腾动画(北京龙腾创星科技有限公司) 京ICP备16063988号-3       本站关键词:flash动画制作 

 
QQ在线咨询
咨询热线
010-57477990
7*24咨询热线
13701141129