【问题标题】:How to loop through items in MovieClip in as3如何在 as3 中遍历 MovieClip 中的项目
【发布时间】:2011-08-05 17:55:47
【问题描述】:

我正在尝试在 as3 中执行此操作

for (var i = 0; i < 8; i++) {
    var clip = "markerMC" + i;
    this.scoreGridMC[clip]._visible = false;
}

但我总是遇到编译错误。

任何帮助,

谢谢....

【问题讨论】:

    标签: flash actionscript-3 actionscript-2 flash-cs5


    【解决方案1】:

    这是 as3,taskinoor 的答案是 as3 仅当您在 Flash IDE 中将这些名称设置为影片剪辑实例名称时...

    选项#1:getChildByName("childName");

    for (var i = 0; i < 8; i++) {
        var clip = "markerMC" + i;
        this.scoreGridMC.getChildByName(clip).visible = false;
    }
    

    要使上述内容生效,您需要在创建影片剪辑时将 mc.name 设置为 mc.name = "markerMC"+0;和 +1 和 ... 一直到 +8;为各自的影片剪辑。

    var mc:MovieClip = new MovieClip(); // or new MarkerMC() or whatever it is in library properties for the mc
    this.scoreGridMC.name = "markerMC0";
    

    作为参考,要遍历影片剪辑的所有子项,请尝试类似(这是选项#2):

    for (var i = 0; i < this.scoreGridMC.numChildren; i++) {
        this.scoreGridMC.getChildAt(i).visible = false;
    }
    

    再一次,taskinoor 的回答也是有效的,但您必须通过 flash IDE 手动创建 mc 并在其属性面板中为其分配实例名称...

    此外,当您收到编译错误时,请在 google 上搜索,直到您在网上找到解决方案。网络就在那里,你只需要使用它。此外,出于明显的原因,您可能希望在问题中发布这些编译错误以及您的 as3 代码,以防不是这样。

    祝你好运。

    【讨论】:

    • getChildByIndex 是错误的。它得到 getChildAt(index)。无论如何+1,因为您的概念正确,并解释了我认为其他答案中缺少的一些东西。 :)
    • 我已将 IDE 中的名称设置为 markerMC0 到 markerMC7,使用 getChildByName 尝试了第一个选项,但它没有用...任何想法,我查看了整个网络并尝试了很多,但是没有运气
    • 好吧,我错了,我的电影剪辑名称有误,选项 1 有效,谢谢。
    • +1 了解详情。我已经删除了我的答案。现在几乎没有用了。
    • @Ascension Systems 感谢您的更正,您说得对,我不知道我从哪里得到 getChildByIndex... gringoLoco007 看来您和我都很幸运,因为 IDE 设置了“名称”属性以及电影剪辑,我忘记了那个小细节:)。至少我认为如果我没有记错的话。
    猜你喜欢
    • 2016-09-17
    • 1970-01-01
    • 2012-02-23
    • 2010-12-11
    • 2011-03-12
    • 2012-09-07
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多