【问题标题】:Dynamically accessing nested movie clips in flash actionscript 2在 flash actionscript 2 中动态访问嵌套的影片剪辑
【发布时间】:2010-10-06 23:48:06
【问题描述】:

我有一个要访问的嵌套影片剪辑实例。影片剪辑的路径由两个变量定义(类似于行和列)。

我已经像这样动态访问父影片剪辑:

eval("row" + ActiveRow)

现在我想动态访问 row(#) 的一个名为 let(#) 的子节点。

以下是我对完成任务的最佳猜测(两者都不起作用):

变量 i:number;

eval("row" + ActiveRow + ".let" + i) 要么 eval("row" + ActiveRow).eval("let" + i)

非常感谢您的努力和可能的解决方案..

【问题讨论】:

    标签: flash dynamic variables actionscript-2 movieclip


    【解决方案1】:

    你可以试试

    this["row" + ActiveRow]["let" + i]
    

    如果在创建实例时将它们放入一个数组中会更好......所以也许

    var rowClips : Array = [];
    
    for (var i : int = 0; i < 10; i++)
    {
         var row : MovieClip = this.createEmptyMovieClip("row" + i, i);
    
         rowClips.push(row);
    }
    

    然后你可以调用它

    rowClips[i];
    

    显然,视情况而定,将您的 MovieClips 添加到数组中可能会有不同的逻辑,但本质上这是一种更好的方式来存储对您的 MovieClips 的引用。

    【讨论】:

    • 我将为剪辑使用一个数组。
    【解决方案2】:

    访问父影片剪辑后,只需索引到子影片。 ActionScript 2 不要求您使用eval 函数来查找动态属性。只需使用对象和[](数组)运算符来索引所需的变量。

    如果您的“行”对象位于当前影片剪辑的根目录中,您可以简单地使用_root[ "row" + ActiveRow ][ "let" + i ]

    但是,由于您已经通过eval("row"+ActiveRow) 获得了初始影片剪辑,因此您可以使用该对象来获得下一个级别。例如,eval("row" + ActiveRow)[ "let" + i ]

    Flash 大量借鉴了 JavaScript,并且与 JavaScript 一样,每个对象本质上都是一个哈希表。使用点运算符相当于使用带有固定字符串的 [](数组)运算符。

    【讨论】:

    • 感谢您的解释。哈希表是有意义的。
    【解决方案3】:

    首先,您似乎在使用表格数据结构,因此一种简单的方法是创建一个二维数组并将影片剪辑存储在其中。然后您可以按索引进行查找。

    或者,您可以为每个影片剪辑命名(使用 name 属性),然后使用 getChildByName。

    IE getChildByName("row"+i).getChildByName("column"+i).

    【讨论】:

      猜你喜欢
      • 2010-10-04
      • 2013-09-29
      • 2012-06-07
      • 2020-01-09
      • 1970-01-01
      • 2014-04-03
      • 1970-01-01
      • 1970-01-01
      • 2011-11-23
      相关资源
      最近更新 更多