查看: 2470|回复: 2
打印 上一主题 下一主题

Flash AS教程6:FLASH的流程控制与循环控制语句

[复制链接]
.    

3797

主题

11

听众

5万

积分

首席设计师

Rank: 8Rank: 8

纳金币
32328
精华
41

活跃会员 优秀版主 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2012-10-19 21:25:00 |只看该作者 |倒序浏览
众所周知,flash中动画依靠的是时间轴,在没有脚本的情况下,动画会依照时间轴从第一帧不停的播放到最后一帧,然后始重复播放或者干脆停止。为了能更好的控制动画,就必须使用脚本语句。而要想使动画具有逻辑判断的功能,就要使用流程控制和循环控制语句了!下面通过几个简单的小例子来学习流程与循环控制语句。
一、流程控制语句
所谓流程控制,无非就是我们想控制动画程序的执行顺序而已。我们可以让flash根据一些特定的条件,来决定要执行哪个程序。这样就好象给了程序一些判断的机制。
if...else控制语句
根据英文的意思,大家可以简单的理解上面的控制语句:如果...就...否则...就... 下面来看看这个流程控制语句的书写格式。
if(条件){

//条件成立的话,就执行这里的程序。

}else{

//条件不成立的话就执行这里的程序。

}
下面重点说一下if后面括号内的条件。这个条件可以是一个固定的值,也可以是一个变量或表达式。如果条件成立的话,也就是条件为真(***e),就会执行if后面的程序,如果条件不成立,也就是条件为假(false),就会执行else里的程序。例如:有这么一个条件,A>B 将这个表达式代入if后面的括号内,这个流程语句的意思就变成:如果A>B的话,就执行第一个大括号内的程序,如果A不大于B,就将执行else后面大括号内的程序。
实例讲解:
1、新建一个flash文档,在舞台上绘制一个圆,选中圆并按F8转换成影片剪辑,起名为:圆 这样就在舞台上创建一个圆的实例。



2、选中舞台上的实例,按F9打开动作面板,输入如下脚本:
onClipEvent (enterFrame) {

if (this._x<400) {//流程条件控制语句,如果这个圆的实例的X轴坐标小于400,就执行后面的程序。

this._x += 5;//让这个圆的坐标向右移动5个象素

} else {

this._x = 0;//控制语句,如果刚才的条件不成立。也就是圆实例的X坐标不小于400,就让它的X坐标为0

}

}
脚本最终编写效果如图:

上面的脚本是一个非常简单的流程控制语句,根据实例的坐标来进行判断。因为我们使用了enterFrame事件,所以flash会不停的执行下面if...else语句。
3、测试影片。会看到圆不停的向右移动,当它的X坐标大于或等于400的时候,程序会把它的X坐标重新更改为0。
二、循环控制语句
所谓的循环语句,其实也是用条件来控制的,只要条件成立,那么,程序就会不停的执行下去,一直执行到条件不成立为止! 常用的循环语句包括while循环、for循环等。因为篇幅有限,下面只重点讲解for循环的使用方法。
FOR循环命令格式:
for(初始变量;条件语句;迭加命令语句){

//用户自己编写的脚本。

}
首先强调一点,for语句的括号内有三个项目,必须要用分号间隔开!

初始变量:循环语句也是用条件是否成立来控制的,通常我们用一个变量来控制程序执行的次数。那么,这个初始变量就要先定义一个值。要注意的是,初始变量这个项目只执行一次!
条件语句:这个项目就是我们的判断语句了。如果这个项目判断为真(***e),也就是条件成立了。它就直接跳进大括号{}内执行里面的程序!反之,如果条件为假(false),它就直接跳出这个for语句了。
迭加命令语句:接上面的条件语句,如果条件语句成立,会执行{}内的程序,那么执行完程序之后,就要回来执行迭加命令语句了。通常它就用来增加或减少刚开始时的初始变量的值。
实例讲解:
1、新建一个flash文档,在舞台上绘制一个圆,选中圆并按F8转换成影片剪辑,起名为:圆 这样就在舞台上创建一个圆的实例。
2、为这个实例起名为:yuan 如图:

3、添加一个新的层,并选中新层的第一帧,按F9打开动作面板,输入如下脚本:

for (i=1; i<5; i++) { //我们定义一个变量i来控制程序的循环次数。条件语句为判断i是否小于5,迭加命令就让每次程序执行之后,让i自己增加一,使程序循环4次!
duplicateMovieClip("yuan", "yuan"+i, i);//duplicateMovieClip是复制命令,用来复制舞台上名字叫yuan的实例,每次复制出来一个,就把新复制出来的实例改名为"yuan"+i。影片的深度也改为i

_root["yuan"+i]._x = random(400);

_root["yuan"+i]._y = random(300);//设置每次复制出来的新实例的X、Y坐标,具体数值随机产生。

_root["yuan"+i]._alpha = random(100);//设置每次复制出来的新实例的透明度,具体数值从100里随机产生。

}
如果大家实在觉得for语言很难读懂的话,你可以按照for语言执行的顺序把i=1代入程序走一遍,可以帮助你理解程序。例如:当i等于1的时候,程序开始判断它是否小于5,那么1肯定小于5了,条件为真,就执行{}内的复制程序,同时复制出来的新实例的名字就变成了yuan1 ,接着就是设置yuan1的坐标和透明度。之后,for语句开始回去执行i++,此时,i的值就变为2了。然后又开始循环判断执行下去......(你可以算一下,这个for循环总共循环了几次呢?答案是4次。)
脚本如图:



4、选中时间轴的第6帧,按F6插入一关键帧,打开动作面板输入以下脚本:
gotoAndPlay(1);
让flash播放到第6帧的时候返回第1帧再来执行for循环语句。
如图:



5、测试效果吧,你会看到舞台上会循环4次复制出4个圆。
希望大家能通过这两个简单的例子掌握流程控制语句和循环控制语句。:)
更多精彩教程,尽在web3D纳金网http://www.narkii.com/college/
文章来源:pconline 作者:寒松
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

0

主题

1

听众

2458

积分

中级设计师

Rank: 5Rank: 5

纳金币
0
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2014-2-22 18:15:26 |只看该作者
Thanks for sharing
回复

使用道具 举报

0

主题

2

听众

3238

积分

中级设计师

Rank: 5Rank: 5

纳金币
0
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

板凳
发表于 2014-2-27 14:52:52 |只看该作者
感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-10 16:43 , Processed in 0.203146 second(s), 31 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部