Flash - ActionScript编程制作物理课件实例教程2012 下载本文

Flash ActionScript编程制作物理课件实例教程

3、新建按钮元件:balloon_btn,前3帧均使用空白帧,在第四帧(点击)内,在中心十字处绘制一个宽50象素,高60象素的椭圆。

4、新建影片剪辑元件:balloon。第一层帧标签设为:bg_color,在中心十字绘制一个填充颜色使用黄色,没有边框,宽50象素,高60象素的椭圆。

5、在balloon元件新建一层,层标签设为:color。将元件balloon_color从库中拖至中心十字,刚好覆盖bg_color层的椭圆,实例名设为color_mc。

6、在balloon元件新建一层,层标签设为:button。将元件balloon_btn从库中拖至中心十字,刚好覆盖前两层的椭圆,实例名设为balloon_btn。

7、在balloon元件新建一层,层标签设为:text。在中心十字处建立一个动态文本,修改文本框的宽度至只能显示一个数字。取消属性面板中的“可选”按钮,如图。

8、在balloon元件新建一层,层标签设为:trail。在气球下方添加一根短曲线,作为气球的拉线。

9、在balloon元件新建一层,层标签设为:action。在action层的第一帧输入ActionScript: var num:Number = Math.ceil(Math.random()*9); //气球显示分数为1-9的随机数 color_mc._alpha = num*10;

//根据气球分数不同显示不同颜色 this.onEnterFrame = function() { //气球每帧运动 _y -= 4*(1+_root.score/300); //气球上升。得分越多,上升速度越快 if (_y<-60) { //气球上升至屏幕上沿 _y = 440; _x = 25+Math.random()*500; //重设位置 _root.life--; //减少生命值 if (_root.life<=0) { _root.gotoAndStop(2); } } _x += 6*(Math.random()-0.5)*(1+_root.score/300); //气球左右晃动。得分越多,晃动幅度越大 };

第 41 页 共 79 页

Flash ActionScript编程制作物理课件实例教程

balloon_btn.onPress = function() { //点击按钮 if (_root.life>0) { _root.score += num; num = Math.ceil(Math.random()*9); color_mc._alpha = num*10; _y = 440; _x = 25+Math.random()*500; } };

10、回到主场景,将图层1标签改为:main。分别建立两个普通文本框,分别写入“得分:”、“生命:”。建立两个动态文本框,变量处分别填入“score”和“life”。

11、将balloon元件拖入主场景,实例名设为:balloon_mc。

12、锁定main层,新建一层,层标签设为:action。action层第一帧写入ActionScipt: var score:Number = 0;

//得分,击中气球获得气球所显示的分数 var life:Number = 20;

//生命,漏掉1个气球生命减少1 var i;

for (i=1; i<10; i++) { //复制气球 duplicateMovieClip(\ this[\ this[\}

balloon_mc._visible = 0; //隐藏原模板气球 stop();

13、新建一层,层标签设为:show。show层第一帧设为空白关键帧,第二帧新建一普通文本框,写入:您失败了。

14、保存,发布。

【例7-5说明】

气球初始位置为随机分布,缓慢上升,同时左右晃动。鼠标点击气球即将气球击碎,可得气球上显示份数。初试生命值为20,没有一个气球升到屏幕顶端,生命值减1。气球上升速度和晃动幅度会随着得分增加逐渐加快。气球显示分数越高,颜色越接近红色。

程序中已有注释,请同学们认真理解、思考程序,看看为了实现每一个功能设定,示例中都是怎么设计的。

第 42 页 共 79 页

Flash ActionScript编程制作物理课件实例教程

【例7-6:小球碰壁反弹】

1、新建Flash文档,大小设为550*400。 2、新建影片剪辑元件ball,在中心绘制大小为40的球。拖入主场景,实例名称设为ball_mc。

3、在场景中心绘制一个530*380的边框,距离边缘10象素。

4、新建action层,在action层第一帧写入ActionScript: ball_mc._x = 10+Math.random()*510; ball_mc._y = 10+Math.random()*360; var v:Number = 15;

var angle:Number = Math.random()*Math.PI; var vx:Number = v*Math.cos(angle); var vy:Number = v*Math.sin(angle);

5、在action层第二帧写入ActionScript: ball_mc._x += vx; if (ball_mc._x>=520) { ball_mc._x = 520-(ball_mc._x-520); vx *= -1; }

if (ball_mc._x<=30) { ball_mc._x = 30+(30-ball_mc._x); vx *= -1; }

ball_mc._y += vy; if (ball_mc._y>=370) { ball_mc._y = 370-(ball_mc._y-370); vy *= -1; }

if (ball_mc._y<=30) { ball_mc._y = 30+(30-ball_mc._y); vy *= -1; }

6、在action层第三帧写入ActionScript: gotoAndPlay(2); 7、保存,发布。

【例7-6说明】

本例中使小球速度随机的语句,使用了确定速度,随机方向的做法,没有使用类似 var vx:Number = Math.random()*20-10; var vy:Number = Math.random()*20-10;

的方法是因为这样有可能随机出水平和竖直方向速度都很小的值,使动画效果不明显。

第 43 页 共 79 页

Flash ActionScript编程制作物理课件实例教程

第七课 流程控制——循环

在许多编程问题中都需要使用循环,例如在一帧内复制影片剪辑绘制曲线、设置大量规则影片剪辑的属性等,前面我们经常使用的3帧动画实际上就是利用flash的时间轴跳转指令实现的循环的一种形式。ActionScript中的循环主要有4种:for、while、do…while、for…in。处于个人的偏好,我更喜欢使用for语句。我们下面一次进行一下介绍。

for循环语句的一般形式为:

for(初试表达式;条件表达式;递增表达式){ 程序

}

习惯上for循环使用i、j、k作为循环的计算变量,初试表达式和条件表达式一般是循环变量的起始值,增量表达式使用++或者--(这两种运算在计算机中执行效率最高)。 【例7-1:等差数列求和运算】 1、新建flash文件。

2、在第一帧内写入如下ActionScript: var i:Number;

var sum:Number = 0; for (i=1; i<=100; i++) { sum += i; }

trace(sum);

3、保存,直接使用“控制”菜单——“测试影片”发布预览。 【例7-1说明】

本例是for循环的简单应用,trace()函数可在测试影片时将变量、信息等显示在output面板内,是程序进行调试时的良好工具,可以显示分支流程、显示变量值等??

【例7-2:绘制曲线方程】

1、在例5-3基础上继续进行修改。

2、将action层第一帧ActionScript修改为: var vx:Number = 5; var vy:Number = 10; var a:Number = 0.2; var i:Number = 0;

for (i=1; i<=550; i++) { duplicateMovieClip(\ this[\ this[\}

3、删除元件ball_mc。删除各层第二、三帧。另存为例7-2,发布。

第 44 页 共 79 页