Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 我无法操纵嵌套在另一个符号中的符号_Actionscript 3_Nested_Symbols - Fatal编程技术网

Actionscript 3 我无法操纵嵌套在另一个符号中的符号

Actionscript 3 我无法操纵嵌套在另一个符号中的符号,actionscript-3,nested,symbols,Actionscript 3,Nested,Symbols,我是一个新的程序员,也是第一次问问题。我正在做一个程序,它显示了一个数学问题,其中每个数字都由一个符号表示。为了更容易控制问题的大小,我想制作一个符号“问题”,并将“数字”的符号放在里面。“问题”是舞台上符号“问题”实例的名称。不同的数字是符号“Number”的实例,命名如下“digit01、digit02、digit03、digit11…”直到“digit33”,我希望程序循环所有数字,使它们在第一帧停止 这是我的代码的相关部分: for (var u: int = 0; u < 4;u

我是一个新的程序员,也是第一次问问题。我正在做一个程序,它显示了一个数学问题,其中每个数字都由一个符号表示。为了更容易控制问题的大小,我想制作一个符号“问题”,并将“数字”的符号放在里面。“问题”是舞台上符号“问题”实例的名称。不同的数字是符号“Number”的实例,命名如下“digit01、digit02、digit03、digit11…”直到“digit33”,我希望程序循环所有数字,使它们在第一帧停止

这是我的代码的相关部分:

for (var u: int = 0; u < 4;u++)
{
   for (var v: int = 1; v < 4;v++)
   {
       this["problem.digit" + u + v].gotoAndStop(1);
   }
}
等等


我感谢你能提供的任何指导。谢谢

寻址不是这样工作的。不能使用单个[]操作来寻址子级的子级。另外,最好使用getChildByName方法,因为点语法访问仅适用于发布选项“自动声明阶段实例”

其次,MovieClip是一个DisplayObjectContainer,因此它可以包含子对象。这些子对象具有名称,您可以通过调用getChildByName(“此处为子对象名称”)方法来引用它们,并且不要忘记键入结果,因为存在各种各样的子对象,因此默认情况下,它们是由其基DisplayObject类键入的。子名称与对象成员名称不同(尽管如我前面所述,“自动声明阶段实例”在幕后为具有相同名称的变量分配子引用):


@迈克尔:别忘了标出正确的答案。:)@MichaelM经过一番思考后,我添加了一些解释,这可能有助于您理解这些东西是如何工作的。
problem.digit01.gotoAndStop(1);
problem.digit02.gotoAndStop(2);
for (var u: int = 0; u < 4;u++)
{
    for (var v: int = 1; v < 4;v++)
    {
        // Get a reference to a child and typecast it as MovieClip.
        var aDigit:MovieClip = problem.getChildByName("digit" + u + "" + v) as MovieClip;
        aDigit.gotoAndStop(1);
    }
}
var M:MovieClip = new MovieClip;

trace(M['a']); // undefined, no error raised
M['a'] = 1;
trace(M['a']); // 1
trace(M.a]);   // 1
// We proceed working with M from above.

// Lets create a child for M.
var C:MovieClip = new MovieClip;

// MovieClip C has a name "D" as of now.
C.name = "D";

// C named "D" becomes a child of M.
M.addChild(C);

trace(M.C); // undefined, because C is not a member of M object, it's just a local variable
trace(M.D); // undefined, because D is the name of MovieClip which is child of M MovieClip but not a member of M objest.
trace(M.getChildByName("C")); // null, because M has no children with name "C".
trace(M.getChildByName("D")); // [object MovieClip] because there is indeed a child with the name "D" inside of M.

// We create a field with the name "E" inside M object.
M.E = C;
trace(M.getChildByName("E")); // null, because M has no children with name "E".
trace(M.E); // [object MovieClip] because M now contains a field E with the reference to MovieClip C named "D".