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];