因为AS3不包括在内,eval()
所以我对如何动态访问对象感到困惑。
我想引用对象的特定属性,但是直到运行时才知道对象的名称和属性的名称。我已经尽力弄清楚了,但是我很茫然。这是一些代码来说明问题:
trace(ObjectName.PropertyName);
//object definitions
var myObj1:Object = {
myProp1 : "cat",
myProp2 : "dog",
myProp3 : "fish"
};
var myObj2:Object = {
myProp1 : "carrot",
myProp2 : "potato",
myProp3 : "celery"
};
//tests
trace( myObj1.myProp2 ); //dog
trace( myObj2.myProp3); //celery
trace( eval("myObj" + i +".myProp" + j));
//example iterators
var i:int = 2;
var j:int = 3;
trace( "myObj"+i+".myProp"+j); //outputs expected string, myObj2.myProp3
trace( getChildByName(["myObj" +i]).getChildByName(["myObj" +j]) ); //error
trace( this["myObj" +i].this["myProp" +j] ) //error
var currObj:String = getChildByName(["myObj" +i]);
var currProp:String = getChildByName(["myProp" +j]);
trace (currObj.currProp); //lots of errors
谢谢您的帮助 :)
第三次尝试使用数组访问方法,您快到了:
trace( this["myObj" + i]["myProp" + j] ) // no error
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句