主题:  请教FOR..IN循环

cnnnd1314

职务:普通成员
等级:1
金币:0.0
发贴:2
#12002/1/26 17:20:03
今天看了看FOR..IN循环,MACROMEDIA的文档上有个例子,可以在父MC中取得所有子MC的INSTANCENAME。
可这在实际应用当中,好象没什么大用处。:)
平时都用FOR或者DOWHILE做循环,很少看到有FOR..IN的例子。
哪位大虾有FOR..IN的实战例子,能给在下一个吗?
或者给俺谈谈用FOR..IN的好处也行!先谢了。



redsteps

职务:普通成员
等级:1
金币:1.0
发贴:144
#22002/1/26 17:26:31
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);
}

编辑历史:[这消息被redsteps编辑过(编辑时间2002-01-26 17:26:46)]


cnnnd1314

职务:普通成员
等级:1
金币:0.0
发贴:2
#32002/1/26 17:36:53
先谢了。不过这就是FLASH文档上的那几个例子啊,我早看了,意思我也明白。:)
只是我这个人没什么创意,我想问的是通过FOR..IN,能做出什么效果来。哪位大虾有现成的例子请给一个吧。:)



金山羊

职务:普通成员
等级:4
金币:10.0
发贴:827
#42002/1/26 19:02:44
平时写程序从来就没有用过for in 循环
虽然知道什么用
但用不上
也很少见有人用


5d.cn
FLASHDEP
TECHNOLOGY SUPPORT
JAVA/ACTIONSCRIPT/javascript
CFML/JSP/COLDFUSION/FLASH REMOTING
JRUN/COLDFUSIONMX
FLASH/DREAMWEARER

5D荣誉斑竹

职务:普通成员
等级:2
金币:2.0
发贴:617
#52002/1/26 19:03:11
我想应该是类似于for each in循环吧,这个大多数应该用于不知道具体的循环次数,比如在myObject对象实例中建立了一组键,每个键内的数目是用户自定义的,谁也不知道具体是多少,所以,如果显示所有键值的话,就可以用for in 了,我也没有具体试过,不知是不是这样的



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
#62002/1/27 22:11:10
for...in的另一个作用是用来辨别对象类型。

我曾经有这个创意,但是最终还是没动手写出来::p

mc的嵌套结构和目录结构很相似,所以,可以用遍历目录树的办法来列举mc及其“子mc”下的所有对象。全部用for...in来完成,采用递归算法。

function func(target){
for(var obj in eval(target)){
if(typeof(obj)=="movieclip"){
func(obj._target);
...
}}}

编辑历史:[这消息被janlay编辑过(编辑时间2002-01-27 22:12:30)]
[这消息被5D大叔编辑过(编辑时间2002-01-28 15:57:00)]