主题:  关于FOR...IN的用法,请高手回答!

流浪的牧师

职务:普通成员
等级:7
金币:23.0
发贴:7973
注册:2001/5/12 13:44:46
#12001/6/15 21:16:22
"FOR...IN"语句是通过判断某一对象的属性或某一数组中的元素来进行循环的.---------引自5D的<深入FLASH5编程>一书..

请写段代码, 关于FOR...IN 与数组的关系,如何利用数组的元素个数来控制循环的次数?



5D荣誉斑竹

职务:普通成员
等级:2
金币:10.0
发贴:585
注册:2001/1/22 21:43:15
#22001/6/15 21:21:11
for..in

语法

for(variableiterant in object){
statement;
}
参数

variableiterant 重复操作的变量名, 可以是对象的任一属性或数组的任一元素.

object 被重复的对象名.

statement 每次重复均要执行的语句.

描述

动作; 通过对象属性或数组元素循环, 对对象的每一属性执行statement语句.

一些属性不能被for 或for..in动作列举. 例如,Array对象的built-in 方法 (Array.sort and Array.reverse)就不能包含在列表中, 电影夹属性, 比如 _x 和 _y,也不能被列举.

for...in结构循环在重复对象原型链上的对象属性. 如果子体的原型是父体,用for...in循环子体属性也将循环父体属性.

播放器

Flash 5 或更高.

例子

下面是用 for..in 循环对象属性的例子:

myObject = { name:'Tara', age:27, city:'San Francisco' };
for (name in myObject) {
    trace ("myObject." + name + " = " + myObject[name]);
}
此例输出如下:

myObject.name = Tara
myObject.age = 27
myObject.city = San Francisco
下面是一使用 typeof 运算符和 for..in 重复子体详细类型的例子:

for (name in myMovieClip) {
    if (typeof (myMovieClip[name]) = "movieclip") {
        trace ("I have a movie clip child named " + name);
    }
}
下面的例子列举电影夹中的子体并发送它们到各自时间线上的第2帧. 电影夹 RadioButtonGroup 是父体,并带有几个子体, _RedRadioButton_, _GreenRadioButton_ and _BlueRadioButton.

for (var name in RadioButtonGroup) {
    RadioButtonGroup[name].gotoAndStop(2);
}




keyframe

职务:普通成员
等级:1
金币:0.0
发贴:48
注册:2001/6/16 1:46:09
#32001/6/16 1:49:47
可以实现: 两种方法:
1、 比如数组: a=new Array("a","b","c","d","e" );
你可以放一个按钮,加动作为:
on (release) {
for( element in a){
trace ( a[element] )
}
} 在output窗口中你就可以看到运行的过程

2、利用数组的内置属性: .length
同上,按钮动作修改为:
on (release) {
for( i=0;i trace ( a[i]);
}
}