flash中for-in循环总结
作者:admin 日期:2010-01-15
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;
}
}
★总体说明: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;
}
}
评论: 0 | 引用: 0 | 查看次数: 8305
发表评论