分享
 
 
 

FLASH条件和循环语句

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

Actions cript 的条件和循环语句有 if, else, else if, for, while, do...while, for...in 和 switch. 在 Flash 中它们被叫做流程控制动作(Action), 但实际上, 其实质与其它程序语言没什么不一样的.

因为条件和循环语句是程序语言中最基础的, 也是最具有实用价值的语句, 所以要在这里仔细讲解一下. 对于有 C++ 和 Java 等编程经验的读者随意浏览一下就可以了.

条件语if句--if

可以说是程序语言中最基本的条件判断语句. 无论在任何语言中都有它的身影.

由下面的例子可以了解它的格式:

name = "SiC";

//下面是 if 语句

if(name == "SiC"){

trace("作者");

}

if 语句通过判断其后圆括号内的逻辑表达式是否为 true 来确定是否执行大括号内的语句. 假如逻辑表达式 name == "SiC" 返回值为真, 就在输出窗口(Output Window)内显示"作者", 否则就不执行.

然后让我们设想一下下面例子的效果:

if(1){

trace("总是执行");

}

如果你还记得前面数据类型的内容, 那么应该可以看出, 这时的 if 语句基本上是多余的, 因为对于常量 1, 逻辑表达式的值恒为 true(其实 1 就是逻辑值 true 的数值表示形式). 但对于常量 0, 则永远为 false. 你可以试试把上例中的 1 改成一个字符串常量(例如 "hi!")看看会有什么效果.

再看一个例子:

name = "SiC";

//下面是 if 语句

if(name = "SiC"){

trace("作者");

}

比较一下看这个例子与第一个例子有什么不同? 不同之处就在于第一个用了 ==, 而这个用了 =. 对于这个例子, if 的判断永远为 true. 想想为什么? 问题就在于使用了赋值运算符 = 而不是逻辑运算符 ==. 对于赋值运算, 其返回的逻辑值总是 true. 这也是初学者常犯的错误.

一定要注意区分赋值运算符 = 和逻辑运算符 ==. 否则你会遇到一些莫名其妙的错误和问题, 而且语法检查也找不出错误(因为赋值运算表达式也是有效的条件表达式). 所以请记住, Actions cript 的相等逻辑运算符是 == 而不是 =.

if...else

假如想要在判断条件不成立时执行另一项操作时怎么办? 很简单, 在 if 语句后面加上个 else 语句块就可以了:

name = "未知";

//下面是 if...else 语句

if(name == "SiC"){

trace("作者");

} else {

trace("未知");

}

很简单吧? 只要把在判断结果为假时要执行的语句放在 else 后的大括号里就行了.

if...else if

如果要进行很多个条件判断怎么办? 也好办, 用 else if 解决:

name = "Sam";

//下面是 if...else if 语句

if(name == "SiC"){

trace("作者");

} else if(name == "Flash MX") {

trace("Flash MX 是软件名称.");

} else if(name != "未知") {

trace("谁是 " + name + "?");

} else {

trace("未知");

}

你可以接任意多个的 else if 来进行多个条件的判断, 最后的 else 语句块可有可无(根据实际需要选用). 唯一不足的就是 else if 太多时执行速度较慢(在其它程序语言中也是一大问题). 这时就轮到 switch 出场了

switch

switch

switch 在 Visual Basic 里面是个很好用的命令. 它可以通过判断不同的条件表达式来执行不同操作. 但是在 Actions cript 中就没有那么大的弹性了. 因为 Actions cript 中 switch 的条件被固定为 ===, 即绝对等于(包括数据类型也要相同), 不像在 VB 中可以额外使用 >, >= 之类的条件运算符. 所以, else if 在需要判断大于小于之类的情况下还是大有用处的. 现在来看看下面的例子:

mynumber = 3; //赋值给 mynumber

//下面是 switch 语句

switch (mynumber) {

case 1:

trace ("这是我希望得到的数字.");

break;

case 2:

trace ("这个数字比我的小一点.");

break;

case 3:

trace ("这是我的数字.");

break;

default:

trace ("这不是我要的数字.")

}

上面的例子是一个完整的 switch 语句块. 在 case 关键字后面的就是需要满足的条件, 如果都不满足, ActionScipt 会查找是否存在 default 语句块, 如果存在, 则执行其中的语句. 另外, 你可能已经发现在每个语句块后都有一个 break 关键字, 为什么呢? 因为如果没有用 break 来跳出 switch 条件选择语句, 程序会继续向下搜索满足条件的 case 项目(包括 defualt 块)并执行其中的语句. 下面是一个修改后的例子:

mynumber = 3; //赋值给 mynumber

//下面是没有加 break 的 switch 语句

switch (mynumber) {

case 1:

trace ("这是我希望得到的数字.");

case 2:

trace ("这个数字比我的小一点.");

case 3:

trace ("这是我的数字.");

default:

trace ("这不是我要的数字.")

}

运行一下这个例子, 你会发现会同时输出了 "这是我的数字" 和 "这不是我要的数字". 为什么? 因为没有了 break, 在运行了满足条件的 case 3: 语句块后, 条件选择语句仍会继续执行, 而 default 块作为默认条件, 它总是会被执行, 从而产生了这样的结果. 一些常见的程序错误也就由此而来.

在 Actions cript 中还有一个用于循环的 continue 命令, 它可以直接跳到所在循环的条件检测部分(即立即进行下一次循环的条件判断). 这个命令不常用到, 所以在这里没有讲解. .

循环语句--for

循环语句

for

对于 for 循环, 我想大多数读者都不会陌生. 下面是一个求 1 到 100 的自然数之和的程序段.

var sum = 0;

//下面是 for 循环

for (var i=1; i<=100; i++) {

sum = sum + i;

}

trace ("sum="+sum);

for 后面括号里面的内容分为三部分: 初始值; 循环条件; 循环值变化方式. 对于初始值没什么可说的, 随便取; 循环条件就是在什么条件下继续循环, 只要懂得逻辑表达式就可以了; 循环值的变化方式可以用任意的赋值语句来改变. 下面是一个修改后的例子:

var sum = 0;

//下面是 for 循环

for (var i=2; i<100; i+=2) {

sum = sum + i; //trace(i);

}

trace("sum="+sum);

上例中我把初始值 i 改为了 2, 条件改为 <100 (即不包括 100), 循环值变成每次加 2. 运行后看看结果, 结果是 1 到 100 的开区间中所有双数之和. 如果不清楚循环内部的工作机理, 可以删除上例中 for 循环体内 //trace(i); 前的双斜杠, 运行代码时会在输出窗口中列出每次的 i 值. 那么如果初值不满足循环条件会怎样? 你可以把 i=2 改为 i=100 看看.

对应于 for 还有一个 for...in 循环, 这涉及到数组和对象的内容, 在后面会介绍

while & do...while

while & do...while

说实在话, 对于一般的编程 while 用得不多. 但是在需要的时候你才会发现它的价值.

while 循环在运行时遵循下面的步骤:

检查 while 后面括号内的条件是否成立.

如果条件成立, 运行语句块内的语句. 否则结束循环, 运行循环体后面的语句.

运行完语句块内的语句后回到第一步.

n = 0;

//下面是 while 循环

while(n < 5) {

n++;

}

trace("n="+n);

上面的例子运行结果为 n=5. 当 n 小于 5 时循环的条件成立, 于是运行其中的 n++ (即 n 增加 1). 当 n 等于 5 时, 因为循环条件已经不成立, 所以中止循环, 执行后面的 trace 语句.

<!-- / icon and title --><!-- message -->

来源: 闪吧

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有