Actionscript 3 从较低级别检索变量值

Actionscript 3 从较低级别检索变量值,actionscript-3,variables,this,undefined,root,Actionscript 3,Variables,This,Undefined,Root,我在主阶段级别创建了一些变量,如下所示: for(i=0,i<10,i++){ var var_name="var_num_"+i; this[var_name]="some value"; }//<-----------------------------------------------------works 所以我得到了10个变量,分别是var_num0,var_num1,var_num2,每个变量都有一些值。 我可以在任何地方打电话给他们 var seco

我在主阶段级别创建了一些变量,如下所示:

for(i=0,i<10,i++){
    var var_name="var_num_"+i;
    this[var_name]="some value";
}//<-----------------------------------------------------works
所以我得到了10个变量,分别是var_num0,var_num1,var_num2,每个变量都有一些值。 我可以在任何地方打电话给他们

var second_var=MovieClip(root).var_num0;//<--------------works
当我想从较低级别调用所有变量时,或者在另一个帧中,或者在其他地方使用另一个循环调用所有变量时,就会出现问题:

var third_var;
for(j=0,j<3,j++){
third_var=this["MovieClip(root).var_num_"+j];//<---------DOSNT WORK
trace(this["MovieClip(root).var_num_"+j]);//<------------returns "undefined"
}
我怎样才能做到这一点?我尝试了很多东西,但什么都没有


谢谢大家

在您的情况下,root和这都是您想要访问vars的范围。所以试试这个:

var third_var:MovieClip;
for(j = 0; j < 3; j++)
{
    third_var = MovieClip(root)[var_num_ + j];
    trace(third_var);
}

另外,在for循环中应该使用分号,而不是角号。

我想在回答之前建议您在AS3中使用“文档类”,以使名称空间和继承等内容更加清晰。使用基于文档、面向对象的编程与通过Flash IDE提供的时间线编程相比,您确切地知道在哪里可以访问内容,因为AS1/2。图坦卡蒙:

关于答案:您正试图在一组[]中移动两个继承级别。另一种编写第一行不起作用的方法是:

这个.myMovieClip[var_num+j]

您还可以使用:this[MovieClip][var_num+j]

基本上,您需要将MovieCliproot从用于调用变量的字符串中去掉,因为您要传递两个继承级别:this->MovieClip->targetVar

您需要使用两个句点,一个句点和一个集合方括号或两个集合方括号来移动两个继承级别。一段时间。和一组方括号[]都完成了向更深一层移动的任务,因此将。在用于调用变量的字符串内部,该变量将不起作用

说明:

以下三个示例都返回相同的变量:

myMovieClip.my_variable

myMovieClip["my_variable"]

var str:String = "my_variable";
myMovieClip[str];