本周,上4年级的小孩开始学方程式,用到了代数。为了方便孩子理解,并学以致用,打算教他一点编程。
程序的选择上不能太难,比如JAVA、C#应该不行,学习javascript应该行,但是会比较枯燥,于是决定让他玩玩FLASH。虽然随着HTML5 的兴起,FLASH正在没落,但FLASH却简单易懂,并且还能帮助孩子画画。
这次编程选择了飘雪花的程序,虽然简单,但内容却还比较全,涉及了:手动画影片片段(MC),帧,actionscript,变量,随机函数,函数方法,事件,时间等等。步骤:
1、FLASH CS6,新建“actionscript 3”,背景黑色。
2、插入“新建元件”(快捷方式:Ctrl + F8),并要选择“为ActionScript”导出,目的是让这个元件成为一个类。比如 类 名,我们可以起个:snow 。随便用个铅笔工具画个“米”字形就行,稍微粗一点,还要用缩放工具缩小一些。颜色自然要用白色咯。
3、在第一帧中,加入背景(我没加)。然后再加一层,按F9,弹出编程框(AS3要求编程不能和其他层共用一个层)。内容如下(含解释):
import flash.utils.Timer; //前面的这2个斜杠,就是注释的意思,表示其后内容不会别计算机识别。还有这行不用写,因为在写后面的Timer时,系统会自动写 for (var i:int=0; i<230; i++) { //循环的写法,表示循环230次,每次增加 1 var mc:MovieClip=new snow(); //变量都是以 var 开头。snow就是前面我们定义好了的mc的类。因为循环230次,这行就表示每次循环都要新生出来一个一模一样的雪花 addChild(mc); //要想出现在影片中,就要用这个addChild添加进来。 mc.x=Math.random()*stage.stageWidth; //Math.random()表示随机生成一个0到1之间的小数,stage.stageWidth是内置的属性,表示本影片的宽度。所以本行就是定位雪花每次出现的X坐标位置,且不会大于影片的总宽度。 mc.y=Math.random()*stage.stageHeight; //出现的Y坐标。X/Y坐标都是从左上角开始计数。 mc.scaleX=mc.scaleY=Math.random()*0.8+0.2; //缩放比例,表示是最小是原来的0.2倍,最大1倍。 mc.alpha=Math.random()*0.6+0.4; //透明度最小为40%,最大为100%。 mc.vx=Math.random()*2-1; //以上参数在点击.之后都会自动出现,但这个vx和下面的vy却不会出现,这是自定义的,你可以随便写作其他。表示每次下落的x/y偏移量。 mc.vy=Math.random()*3+3; mc.name="mc"+i; //给每个雪花编一个名字,下面的程序好找。 } //addEventListener(Event.ENTER_FRAME,snowP); //本来是这行,flash每秒大约是24帧,就是每1/24秒就执行这个叫snowP的函数。 //addEventListener(MouseEvent.MOUSE_OVER,snowP); //和上行一样,都是事件添加的方法。 var timer1:Timer=new Timer(50); //为了精确控制时间间隔,用这个,表示没50毫秒就执行一次。 timer1.addEventListener(TimerEvent.TIMER,snowP); //这个添加时间的函数前,用到了实例化timer1。事件名字可以从编程框的左边选择。 timer1.start(); //开始 //function snowP(evt:Event):void { //这行是对应Event.ENTER_FRAME的 function snowP(evt:TimerEvent):void { //和TimerEvent.TIMER对应 for (var i:int=0; i<230; i++) { var mc:MovieClip=getChildByName("mc"+i) as MovieClip; //根据上面定义的雪花名字来找到已经实例化的影片,as 是作为的意思。当你写get后,可以点击“显示代码提示”,就可显示后面的内容,对脑子不好的人很好。 mc.x+=mc.vx; //每次左右偏移一点,下面是往下一点。 mc.y+=mc.vy; if (mc.y>stage.stageHeight) { //如果雪花落到了影片的最下面之外,就从最上面从新开始。 mc.y=0; } if (mc.x<0||mc.x>stage.stageWidth) { //飘落到左右外,再随机横坐标出现。 mc.x=Math.random()*stage.stageWidth; } } }
完成了,可以试试。
对上面的这个影片,可以把他们统统做成一个MC,这样,大影片中,就可以嵌套这个小影片了,小影片演小影片的,大环境演大环境的。
这个网站的blog编辑器实在是无法说,系统老是出现许多乱码,如:
</span><span style="font-family: Arial, Helvetica, sans-serif;">
导致我排版的时间比我写文章的时间还长!
时间: 2024-10-10 14:39:14