多语言展示
当前在线:1314今日阅读:179今日分享:36

[AS3编程教学]掉落的小球(3)

大家可以对比一下,本教程的上一篇是去年的12月份写的,今天已经2013年的6月份了,这6个月没有继续往下写的原因并不是笔者辞职回了趟老家然后发现呆不下去又跑到深圳工作了,绝对不是这些颠簸和琐事。而是,当初那个徒弟学到第二篇就不想继续往下学了,果然不出所料此人又是一个半途而废意志力不够坚强的人。实话说,从大二开始便有慕名而来单方面强行喊我师傅的人,然后如今我已经毕业工作了四年了,这六七年的时间为何没有一个徒弟出师,这实在是一个需要思考的问题。话不多说,本节开始对掉落的小球这个简单物理现象用程序来实现,到最后你会发现,只有程序实现的效果才是最真实的,因为程序是理性的,用代码写出来的是科学严谨的;而用动画做那是感性的,不够真实的。 目标:我们让小球匀速下降到地面,主要学会匀速运动的表现。
工具/原料

FlashCS5.5


方法/步骤
1

打开FlashCS5.5,新建一个名为“掉落的小球3.fla”的文件,在舞台下方位置画一条线当做是地面,并保存在你电脑上某个地方。这些就不多说了,大家都不是小孩子。曾经有个人不存东西,做了7个小时候的动画就丢了。。。重新做一遍不但花时间而且非常无聊。

2

在舞台上画一个不大不小的圆,按下F8,转成影片剪辑,取名为“小球”,然后回到舞台选中小球,属性面板取名为“mcBall”。

3

我们理一下思路,需要做一个小球从高处掉落然后停下来的效果。所以这一步我们就用代码将小球放到高处某个位置。这个做法很简单,我们按下F9,在第一帧输入如下代码://小球的高度在50,横坐标我们舞台上随机。mcBall.x = Math.random()*stage.stageWidth;mcBall.y = 50;

4

这一步要开始掉落了。你要知道掉落是个持续过程,这个过程表现在舞台上就是小球的y坐标一直增大(舞台坐标左上角是最小的(0,0)点),所以我们需要一个持续调用某个方法来不停地改变小球的y位置的处理。在我脑中有四五种方法可以实现,今天就说最常用的一种:ENTER_FRAME事件。stage.addEventListener(Event.ENTER_FRAME,downBall);function downBall(e:Event):void{         mcBall.y+=5;}

5

解释一下上面的代码,ENTER_FRAME事件是一个按照帧频的频率持续调用某个方法的事件,比如本教程使用的帧频是24帧,那么意味着每秒调用侦听函数24次。我们以这么高的频率做了什么呢?就是让小球的位置每次往下移动5个像素。

6

你测试一下,是不是发现小球已经开始往下掉了!只不过是匀速运动。而且小球会无限地往下掉,虽然你看不到,但是小球还是在一直往下掉,这没必要因为看不见的事情你做了也没用,所以我们判断一下,当小球掉到地面高度时后就停止继续掉落方法的执行。stage.addEventListener(Event.ENTER_FRAME,downBall);function downBall(e:Event):void{         mcBall.y+=5;                 //实时判断是否到达地面,我的地面在367这个高度         if(mcBall.y+mcBall.height>=367)         {                   mcBall.y=367-mcBall.height;                   stage.removeEventListener(Event.ENTER_FRAME,downBall);         }}

7

本次教程到此结束,下一篇我们讲述真实的加速掉落。

注意事项
1

本教程是一个入门级的编码练习,程序优化和效率以及合理性方面暂不讨论,这些课题留在以后实现。

2

如果你的效果不对,那就重新来一遍。

推荐信息