天天看點

AS、Flex如何循環調用一個對象的屬性、方法

    當一個類有很多名稱相似的屬性(如prop1,prop2,prop3……),或是有很多名稱相似的方法(如fun1,fun2,func3……),那麼如何用一個for()循環循環調用這些屬性和方法呢?

    可以用如下的方法實作:

package {

import flash.display.Sprite;

public class Test extends Sprite

{

private var prop1:String = "foo";

private var prop2:String = "bar";

public function Test():void

{

for (var i:int=1; i<3; i++)

{

trace(this["prop"+i]);

}

for (var j:int=1; j<3; j++)

{

this["fun"+j].apply(this, [j,"字串"+j]);

}

}

private function fun1(i:int, str:String):void

{

trace("fun1被調用!");

trace(i);

trace(str);

}

private function fun2(i:int, str:String):void

{

trace("fun2被調用!");

trace(i);

trace(str);

}

}

}      

輸出結果:

foo

bar

fun1被調用!

1

字串1

fun2被調用!

2

字串2

    如果要循環調用其它類對象的屬性、方法,比如在類Test中循環調用類Test2執行個體對象的屬性、方法。可以用下面的方法實作:

Test.as

package {

import flash.display.Sprite;

public class Test extends Sprite

{

public function Test():void

{

var test2:Test2 = new Test2();

for (var i:int=1; i<3; i++)

{

trace(test2["prop"+i]);

}

for (var j:int=1; j<3; j++)

{

test2["fun"+j].apply(test2, [j,"字串"+j]);

}

}

}

}

Test2.as

package

{

public class Test2

{

public var prop1:String = "test2中的foo";

public var prop2:String = "test2中的bar";

public function Test2():void

{

}

public function fun1(i:int, str:String):void

{

trace("test2中的fun1被調用!");

trace(i);

trace(str);

}

public function fun2(i:int, str:String):void

{

trace("test2中的fun2被調用!");

trace(i);

trace(str);

}

}

}

輸出結果:

test2中的foo

test2中的bar

test2中的fun1被調用!

1

字串1

test2中的fun2被調用!

2

字串2