ActionScript 3 流程控制
条件选择(Logical Choices)
if if...else if...else if...else
1 if(条件表达式){
//如果表达式的值为 true 执行流程 否则跳过
流程
}
2 if(条件表达式){
//如果表达式的值为 true 执行流程A 否则执行B
流程 A
}else{
流程 B
}
3 if(条件表达式A){
//如果表达式A的值为 true 执行流程A
//如果表达式B的值为 true 执行流程B 否则执行C
流程 A
}else if(条件表达式B){
流程 B
}else{
流程 C
}
//注意:一旦有一个 if 语句中的条件表达式为 true 执行这条语句
//之后的else if 语句不管是否为true 都不被执行
4 //如果表达式A的值为 true 执行下一条if语句
//若果表达式B的值也为 true 执行流程
if(条件表达式A){
if(条件表达式B){
流程
}
}
5 //if语句4相当于
if(条件表达式A&&条件表达式B){
//如果表达式A的值为 true 并且 表达式B的值也为 true
//执行流程
流程
}
6 &&、|| 和 !
技巧:为了提高程序效率 我们应当把最有可能为真的 if 选项提到最前面去
循环(Loop)
当碰到要重复很多相似的操作时 就要考虑使用循环
1 根据某条件挨个比对某集合中的所有成员
2 对某集合中每个成员执行操作
...
ActionScript3 中的循环语句{
while
do-while
for
for...in
for each...in
}
循环设计的步骤{
1 确定循环内容 (哪些事情要重复执行) 这些重复执行的指令 又称为循环体
2 确定循环变量 用循环变量来控制循环开始于结束
3 循环三要素 {
A:循环初始化 在循环结束前 循环变量设置初值
B:循环条件表达式 (重复指令的条件) 包含条件表达式的终值
//如果循环不能达到终止条件 循环就变成死循环 AVM 会报错并终止
C:循环体中必须有改变循环变量值的语句
}
}
while {
首先判断是否符合循环条件 当满足条件表达式的时候 执行循环体
结构{
while(循环条件){
循环体
}
var i:int=0;
while(i<10){
trace(i);
i++;
}
}
do-while{
先执行循环体一次(不管条件表达式是否为 true) 再判断是否符合循环条件
当满足条件表达式的时候 执行循环体
结构{
do{
循环体
}while(循环条件)
var i:int=10;
do{
trace(i);
i--;
}while(i>0)
}
for 循环{
for 循环应用最广泛 也最灵活
先声明初始化值 当表达式值为 true 时 执行循环体 更新初始化值 再计算表达式的值
如果仍为 true 继续执行循环体 直到表达式的值为 false 终值循环
结构{
for(初始化;循环条件;步进){
//步进(Step)是指每次循环 对循环变量所做的变化
循环体
}
for(var i:int=0;i<10;i++){
trace(i);
}
for(var i:int=0,j=0;i+j<10;i++){
trace(i);
}
//定义多个初始变量(条件)
for(var i:int=0,j=0;i+j<10;i++,j+=2){
trace(i);
trace(j);
}
for(;;){
//空循环 无限循环
}
}
for...in 和 for each...in {
//集合:一个或多个元素的集合
//枚举:挨个访问集合中的所有元素
var o:Object={
name:"Tiger",
age:22,
sayHi:function():void{
trace("Hello");
}
}
//k为成员名字
for(var k in o){
//trace(typeof(k));
trace("成员名字: "+k+" 成员值: "+o[k]);
}
//k为成员值
for each(var k in o){
//trace(typeof(k));
trace("成员值: "+k);
}
}
break 和 continue
break 和 continue 用来控制循环流程 在循环体内使用
break 用来跳出循环
continue 终止当前一轮的循环 直接跳到下一轮循环
而在这一轮中 循环体内的 continue 后的语句也不被执行
return 终止循环
break {
for(var i:int=0;i<5;i++){
//当 i 等于 3 跳出循环 整个循环终止
if(i==3) break;
trace(i); //输出0 1 2
}
for(var i:int=0;i<5;i++){
trace(i);
if(i==3) break; //输出0 1 2 3
}
}
continue {
for(var i:int=0;i<5;i++){
//当 i 等于 3 跳出当此循环 继续执行后面的循环
if(i==3) continue;
trace(i); //输出0 1 2 4
}
}
break 和 continue 的标签用法
var v:int=0;
var v2:int=0;
var v3:int=0;
lable:
for(v;v<10;v++){
trace(v);
lable2:
for(v2;v2<10;v2++){
if(v2>8) break lable;
//终止并转到标签为 lable 的循环
trace(v2);
//lable3:
for(v3;v3<10;v3++){
if(v3>3) continue lable2;
//终止当此循环 转到标签为 lable2 的循环
trace(v3);
}
}
}
switch 分支选择语句
switch 语句将括号中的值与各 case 分支中的值相比较 相等则执行
如果没有找到相等的分支 执行 default 分支
ActionScript3 使用 === 比较两者是否相等
1 var fruits:Array=["苹果","香蕉","葡萄"];
var currentFruit:String=fruits[Math.floor(Math.random()*fruits.length)];
trace("摸到的水果是:"+currentFruit);
switch(currentFruit){
case "苹果":
trace("按苹果价付钱");
break;
case "香蕉":
trace("按香蕉价付钱");
break;
default:
trace("免费品尝: "+currentFruit);
}
2 省略 break 的用法
var s:Array=["是","yes","否","no"];
for each(var i in s){
switch(i){
case "是":
case "yes":
trace("通过");
break;
case "否":
case "no":
trace("没有通过");
break;
default:
}