FlashCS5.5
打开FlashCS5.5,新建一个名为“掉落的小球3.fla”的文件,在舞台下方位置画一条线当做是地面,并保存在你电脑上某个地方。这些就不多说了,大家都不是小孩子。曾经有个人不存东西,做了7个小时候的动画就丢了。。。重新做一遍不但花时间而且非常无聊。
在舞台上画一个不大不小的圆,按下F8,转成影片剪辑,取名为“小球”,然后回到舞台选中小球,属性面板取名为“mcBall”。
我们理一下思路,需要做一个小球从高处掉落然后停下来的效果。所以这一步我们就用代码将小球放到高处某个位置。这个做法很简单,我们按下F9,在第一帧输入如下代码://小球的高度在50,横坐标我们舞台上随机。mcBall.x = Math.random()*stage.stageWidth;mcBall.y = 50;
这一步要开始掉落了。你要知道掉落是个持续过程,这个过程表现在舞台上就是小球的y坐标一直增大(舞台坐标左上角是最小的(0,0)点),所以我们需要一个持续调用某个方法来不停地改变小球的y位置的处理。在我脑中有四五种方法可以实现,今天就说最常用的一种:ENTER_FRAME事件。stage.addEventListener(Event.ENTER_FRAME,downBall);function downBall(e:Event):void{ mcBall.y+=5;}
解释一下上面的代码,ENTER_FRAME事件是一个按照帧频的频率持续调用某个方法的事件,比如本教程使用的帧频是24帧,那么意味着每秒调用侦听函数24次。我们以这么高的频率做了什么呢?就是让小球的位置每次往下移动5个像素。
你测试一下,是不是发现小球已经开始往下掉了!只不过是匀速运动。而且小球会无限地往下掉,虽然你看不到,但是小球还是在一直往下掉,这没必要因为看不见的事情你做了也没用,所以我们判断一下,当小球掉到地面高度时后就停止继续掉落方法的执行。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); }}
本次教程到此结束,下一篇我们讲述真实的加速掉落。
本教程是一个入门级的编码练习,程序优化和效率以及合理性方面暂不讨论,这些课题留在以后实现。
如果你的效果不对,那就重新来一遍。