代码之家  ›  专栏  ›  技术社区  ›  Bryan

动态访问Flash操作脚本2中的嵌套电影剪辑

  •  2
  • Bryan  · 技术社区  · 16 年前

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

    我已经动态访问父电影剪辑,如下所示:

    eval(“行”+activerow)

    现在,我想动态地访问行()的一个名为let()的子级。

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

    VI:数量;

    eval(“row”+activerow+“.let”+i) 或 eval(“行”+activerow).eval(“让”+i)

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

    3 回复  |  直到 16 年前
        1
  •  8
  •   James Hay    16 年前

    你可以试试

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

    显然,根据情况,将movieclip添加到数组中可能有不同的逻辑,但本质上,它是存储movieclip引用的更好方法。

        2
  •  1
  •   johnny    16 年前

    访问父电影剪辑后,只需索引到子剪辑中。操作脚本2不要求您使用 eval 用于查找动态属性的函数。只需使用对象和 [] (数组)为所需变量编制索引的运算符。

    如果您的“row”对象位于当前电影剪辑的根目录中,则只需使用 _root[ "row" + ActiveRow ][ "let" + i ] .

    但是,因为你已经有了最初的movieclip via eval("row"+ActiveRow) ,您可以使用此对象获取下一个级别。例如, eval("row" + ActiveRow)[ "let" + i ] .

    flash大量借用了javascript,和javascript一样,每个对象本质上都是一个哈希表。使用点运算符等同于使用带固定字符串的[](数组)运算符。

        3
  •  0
  •   Michael Hoisie    16 年前

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

    或者,命名每个电影剪辑(使用name属性),并使用getchildbyname。

    即getchildbyname(“row”+i).getchildbyname(“column”+i)。