AS 入门-“for”循环语句
2012-03-20 12:49
141 查看
本节应掌握的知识要点:
①for循环应用;②nextFrame()、prevFrame()动作应用;③层深度的进一步理解。
与条件判断语句一样,循环语句也是最具有实用性的语句,在满足条件时程序会不断重复执行,直到设置的条件不成立才结束循环,继续执行下面的语句。
这1讲我们将学习一个最常用的for循环语句和两个动作语句nextFrame()、prevFrame()。
for循环语句格式如下:
for(变量初始值;循环条件;进入下一循环){
条件成立时执行的动作}
nextFrame()进入下一帧并停止在该帧
prevFrame()返回前一帧并停止在该帧
画面上是一个简单的线条变幻特效,点击“删除”按钮线条会全部消失,点击“向右”按钮,会显示另一个特效,如果不点击删除按钮直接点击“向右”按钮,会显示另一个特效。这个效果就是运用for循环语句对一个含有简单动作补间、实例名为“line”的影片剪辑进行循环复制实现的。
打开源文件看看,场景上有【按钮】、【mc】、【as】3个图层。【按钮】图层第1帧上有一个“删除”按钮和一个“向右”按钮,第2帧上有一个“返回”按钮;【mc】图层上是一个实例名为“line_mc”的影片剪辑。
在【as】图层第1帧上的语句:
stop();
line_mc._x=120;
line_mc._y=220;
line_mc._visible= 0; //设置作为父本的影片剪辑“line_mc”不可见。
for (i=1; i<100; i++) { //设定变量i的初始值为1,设定循环条件为i<100,进入下一循环时变量i自加1。
line_mc.duplicateMovieClip("line_mc"+i, i); //复制新影片剪辑。
_root["line_mc"+i]._x = line_mc._x+3*i; //设置新复制的影片剪辑的横坐标。
_root["line_mc"+i]._rotation = 3.6*i; //设置新复制的影片剪辑的旋转参数。
}
“删除”按钮上的语句:
on (release) {
for (i=1; i<100; i++) {
removeMovieClip("line_mc"+i);
}
}
“向右”按钮上的语句:
on (release) {
nextFrame(); // 进入并停止在下1帧
}
在【as】图层第2帧上的语句:
for (i=2; i<100; i=i+2) {
line_mc.duplicateMovieClip("line_mc"+i, i);
_root["line_mc"+i]._x = line_mc._x+3*i;
}
“返回”按钮上的语句:
on (release) {
prevFrame(); //返回前1帧
}
我们来分析一下语句的执行过程,影片开始播放时停留在第1帧上,将被复制的父本影片剪辑在场景上的坐标定义到(120,200)位置,并使其不可见,接下来根据for语句小括号“()”里设置的参数,开始执行循环体内的语句。第一个参数定义了变量i被赋予初始值为“1”,第2个参数定义了循环的条件为i<100,当满足这个条件时,将循环执行大括号“{}”内的语句块,第3个参数i++,定义了在每一次循环结束时i的值加1,直到超过i<100的条件为止才停止循环。
循环体大括号“{}”内的动作是复制实例名为“line_mc”的影片剪辑,并为新复制的影片剪辑命名为“line_mci”,层深度为“i”,设置其横坐标位置为场景上的父本“line_mc”影片剪辑的横坐标加上“3*i”像素,并旋转3.6*i度。
当循环开始时,i的值为1,符合i<100的条件,于是复制出第一个新影片剪辑,名称为“line_mc1”,在父本“line_mc”的位置上右移3个像素,并旋转3.6度。至此第一次循环结束,i的值加1。继而进行下一轮循环。
如此不断的循环,直至i的值为100时,便超出了设置的条件,于是循环结束,停止复制“line_mc”影片剪辑。
此时,场景上新复制出的影片剪辑以横向相差3像素、旋转相差3.6度等距排列并同时播放,从而形成了有规律奇妙变幻的特效。
再来分析“删除”按钮上的语句,与第1帧上的循环条件一样,差别只是循环体内执行的动作不同,当满足条件时循环删除上一步新复制出的所有影片剪辑。
点击“向右”按钮时,播放头进入第2帧,再按照新的循环条件循环复制线条,并为新复制的线条赋予新的属性值。
可以看到,第2帧的语句里,循环条件里面i的初始值为2,每循环一次i递增2,设置的层深度为i,即每个复制出的新影片剪辑所占用的都为偶数深度层。
新影片剪辑的属性设置与第1帧上所不同的仅仅是减去了旋转属性的设置,我们看到的又是第2种特效。
如果在第1帧不点击“删除”按钮而直接点击“向右”按钮,我们会看到第3种特效。这是由于上一次复制的影片剪辑没有删除,在第2帧上所有偶数深度层上的线条被新复制出的线条替换掉了,而奇数深度层上原来的线条则保留了下来,由此就组合出了另一种效果。 点击第2帧上的“返回”按钮,播放头回到第1帧,再一次按照第1帧的动作脚本循环复制“line_mc”,于是第一个特效又出现在场景上。
在设置循环语句的条件时,必须注意条件的逻辑性和合理性,特别要避免程序陷入死循环。
比如,如果将以上for循环的参数设置为for(i=1; i>0; i++),这个条件就会永久成立,导致程序陷入死循环。
①for循环应用;②nextFrame()、prevFrame()动作应用;③层深度的进一步理解。
与条件判断语句一样,循环语句也是最具有实用性的语句,在满足条件时程序会不断重复执行,直到设置的条件不成立才结束循环,继续执行下面的语句。
这1讲我们将学习一个最常用的for循环语句和两个动作语句nextFrame()、prevFrame()。
for循环语句格式如下:
for(变量初始值;循环条件;进入下一循环){
条件成立时执行的动作}
nextFrame()进入下一帧并停止在该帧
prevFrame()返回前一帧并停止在该帧
画面上是一个简单的线条变幻特效,点击“删除”按钮线条会全部消失,点击“向右”按钮,会显示另一个特效,如果不点击删除按钮直接点击“向右”按钮,会显示另一个特效。这个效果就是运用for循环语句对一个含有简单动作补间、实例名为“line”的影片剪辑进行循环复制实现的。
打开源文件看看,场景上有【按钮】、【mc】、【as】3个图层。【按钮】图层第1帧上有一个“删除”按钮和一个“向右”按钮,第2帧上有一个“返回”按钮;【mc】图层上是一个实例名为“line_mc”的影片剪辑。
在【as】图层第1帧上的语句:
stop();
line_mc._x=120;
line_mc._y=220;
line_mc._visible= 0; //设置作为父本的影片剪辑“line_mc”不可见。
for (i=1; i<100; i++) { //设定变量i的初始值为1,设定循环条件为i<100,进入下一循环时变量i自加1。
line_mc.duplicateMovieClip("line_mc"+i, i); //复制新影片剪辑。
_root["line_mc"+i]._x = line_mc._x+3*i; //设置新复制的影片剪辑的横坐标。
_root["line_mc"+i]._rotation = 3.6*i; //设置新复制的影片剪辑的旋转参数。
}
“删除”按钮上的语句:
on (release) {
for (i=1; i<100; i++) {
removeMovieClip("line_mc"+i);
}
}
“向右”按钮上的语句:
on (release) {
nextFrame(); // 进入并停止在下1帧
}
在【as】图层第2帧上的语句:
for (i=2; i<100; i=i+2) {
line_mc.duplicateMovieClip("line_mc"+i, i);
_root["line_mc"+i]._x = line_mc._x+3*i;
}
“返回”按钮上的语句:
on (release) {
prevFrame(); //返回前1帧
}
我们来分析一下语句的执行过程,影片开始播放时停留在第1帧上,将被复制的父本影片剪辑在场景上的坐标定义到(120,200)位置,并使其不可见,接下来根据for语句小括号“()”里设置的参数,开始执行循环体内的语句。第一个参数定义了变量i被赋予初始值为“1”,第2个参数定义了循环的条件为i<100,当满足这个条件时,将循环执行大括号“{}”内的语句块,第3个参数i++,定义了在每一次循环结束时i的值加1,直到超过i<100的条件为止才停止循环。
循环体大括号“{}”内的动作是复制实例名为“line_mc”的影片剪辑,并为新复制的影片剪辑命名为“line_mci”,层深度为“i”,设置其横坐标位置为场景上的父本“line_mc”影片剪辑的横坐标加上“3*i”像素,并旋转3.6*i度。
当循环开始时,i的值为1,符合i<100的条件,于是复制出第一个新影片剪辑,名称为“line_mc1”,在父本“line_mc”的位置上右移3个像素,并旋转3.6度。至此第一次循环结束,i的值加1。继而进行下一轮循环。
如此不断的循环,直至i的值为100时,便超出了设置的条件,于是循环结束,停止复制“line_mc”影片剪辑。
此时,场景上新复制出的影片剪辑以横向相差3像素、旋转相差3.6度等距排列并同时播放,从而形成了有规律奇妙变幻的特效。
再来分析“删除”按钮上的语句,与第1帧上的循环条件一样,差别只是循环体内执行的动作不同,当满足条件时循环删除上一步新复制出的所有影片剪辑。
点击“向右”按钮时,播放头进入第2帧,再按照新的循环条件循环复制线条,并为新复制的线条赋予新的属性值。
可以看到,第2帧的语句里,循环条件里面i的初始值为2,每循环一次i递增2,设置的层深度为i,即每个复制出的新影片剪辑所占用的都为偶数深度层。
新影片剪辑的属性设置与第1帧上所不同的仅仅是减去了旋转属性的设置,我们看到的又是第2种特效。
如果在第1帧不点击“删除”按钮而直接点击“向右”按钮,我们会看到第3种特效。这是由于上一次复制的影片剪辑没有删除,在第2帧上所有偶数深度层上的线条被新复制出的线条替换掉了,而奇数深度层上原来的线条则保留了下来,由此就组合出了另一种效果。 点击第2帧上的“返回”按钮,播放头回到第1帧,再一次按照第1帧的动作脚本循环复制“line_mc”,于是第一个特效又出现在场景上。
在设置循环语句的条件时,必须注意条件的逻辑性和合理性,特别要避免程序陷入死循环。
比如,如果将以上for循环的参数设置为for(i=1; i>0; i++),这个条件就会永久成立,导致程序陷入死循环。
相关文章推荐
- python入门——条件语句、for、while循环4
- Shell脚本入门(九) - 循环控制语句:for in
- 【技术】Java入门:for-each循环语句使用总结
- ios入门攻略 07篇 C语言基础【循环结构之for语句,打印九九乘法表】
- 第一章 一个入门实例 1.3 for循环语句
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
- 第九周项目 1 利用循环求和(for语句)
- PHP中for循环语句的几种“变态”用法
- python入门之语句(if语句、while语句、for语句)
- 这是网友发的一道很常见的面试题, for(foo('A');foo('B')&&(i<2);foo('C')) ,其实考的就是for (初始化语句; 判断条件; 循环条件) ,现在详细解析一下!
- java for循环里面执行sql语句操作,有效结果只有一次,只执行了一次sql
- Shell入门教程:流程控制(5)for 循环
- shell脚本之循环语句for,while,until用法的详解
- oracle控制语句学习四——while循环控制语句、for循环控制语句 递增 递减、嵌套循环和标号
- Python菜鸟--for 循环语句
- for循环语句的bug?
- 关于for的循环语句的问题
- Swift笔记:For-In、While 循环、if条件语句
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
- ios入门攻略 06篇 C语言基础【循环结构之while ,do-while语句】