flash中for-in循环总结

2009-10-17 12:09
★总体说明:for-in语句主要用来罗列对象属性的循环方式。它并不需要明确的更新语句,因为循环重复数是对象属性的数目决定的。它的语法如下:
for (var shuxing in object){
yuju; //语句要按照某种方式明显地使用shuxing
}
yuju对于object的每一个属性只执行一次,object是任何有效对象的名称,shuxing是任意的变量名或标识符。在每一次循环过程中,shuxing用来临时保存一个串,这个串正是当前所列举对象属性的名称。串值可以在每一次循环期间被用来访问和操作当前的属性。需要注意三点!第一:for-in循环中所检查的对象属性并不是按照可预测的顺序来进行的;第二:它只能列举用户自定义对象的属性,包括任何继承属性,但内置对象的一些属性以及它的方法就不会被列举;第三:for-in循环不能列举出未定义,也就是没有默认值的文本域。下面通过四个例子来详细显示它的用法:
●1,列举自定义对象属性:
var ball=new Object();
ball.radius=12;
ball.color="red";
ball.alpha=100;
for (var shuxing in ball){
trace("ball."+shuxing+" is "+ball[shuxing]);
}
输出结果如下:
ball.alpha is 100
ball.color is red
ball.radius is 12

●2,列举内置对象属性:
for (var shuxing in Key){
trace("Key."+shuxing+" is "+Key[shuxing]);
}
因为for-in循环不能列举内置Key对象的属性和方法,所以无任何输出结果。

●3,列举数组元素:
var shuzu=[12,"dsf",45];
for (var yuansu in shuzu){
trace("shuzu."+yuansu+" is "+shuzu[yuansu]);
}
输出结果为:
shuzu.2 is 45
shuzu.1 is dsf
shuzu.0 is 12

●4,列举给定时间线(_root)内所有剪辑:先在主时间线上放三个影片剪辑“mc1”,“mc2”,“mc3”。然后写如下代码:
for (var shuxing in _root) {
if (typeof _root[shuxing] == "movieclip") {
    trace(_root[shuxing]._name);
}
}
输出结果为:
mc3
mc2
mc1

●5,寻找给定时间线(_root)内的动态或输入文本域:先在主时间线上放三个空文本域,并依次把它们的变量名字设置为:“bianliang1”,“bianliang2”,“bianliang3”。然后写如下代码:
for (var shuxing in _root) {
trace(_root[shuxing]);
}
输出结果为:
WIN 7,0,14,0
_level0.instance1
_level0.instance2
_level0.instance3
第一行为$version对象的值,也就是播放器的版本号,后三行均为三个未命名文本域的名字,只不过这个名字是FLASH自动分配的。但是for-in循环并没有找到三个文本域的值,尽管它们都为空值:""。如果想找到它们,就必须手动或程序化的初始化它们,并且程序化的初始化时,甚至可以把它们的值设置为0。看如下代码:
bianliang1 = "sdf";
bianliang2= "";
bianliang3 = 234;
for (var shuxing in _root) {
trace( _root[shuxing]);
}
输出结果为:
234
     //bianliang2在这里显示为一个空行
sdf
WIN 7,0,14,0
_level0.instance1
_level0.instance2
_level0.instance3

-------------------------------------
列举某元件中所有子元件:
for (name in div)
{
  if (div[name])
  {
   div[name]._alpha = 10;
  }
}  


文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 0 | 引用: 0 | 查看次数: 8305
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 支持Gravatar头像.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 300 字 | UBB代码 关闭 | [img]标签 关闭