【问题标题】:AS3 - Getting child by name and then by depthAS3 - 按名字然后按深度获取孩子
【发布时间】:2009-11-12 14:20:04
【问题描述】:

我有 3 个精灵:img1spr、img2spr 和 img3spr。在每个精灵里面我都有一些位图。 每个精灵都有一个名字:

img1spr.name=name1;
img2spr.name=name2;
img3spr.name=name3;

现在每次执行函数时名称都会发生变化,我想知道是否有办法执行以下操作:

getChildByName("name1").getChildAt(0)

这意味着我想找到名为name1的精灵,然后找到它里面的第一个孩子,或者用numChildren计算name1里面的元素个数。

有没有办法做到这一点?

【问题讨论】:

    标签: flash actionscript-3


    【解决方案1】:

    你快到了 - getChildByName 返回一个 DisplayObject,你必须将其转换为 DisplayObjectContainer 才能调用 getChildByNamenumChildren

    trace(DisplayObjectContainer(getChildByName("name1")).numChildren);
    DisplayObjectContainer(getChildByName("name1")).getChildAt(0);
    

    如果您在两者之间更改精灵的名称,您必须确保不要为父子列表中的两个对象分配相同的名称(flash 允许这样做)。这是因为getChildByName 返回具有给定名称的第一个孩子 - 这可能是也可能不是您要查找的那个。

    【讨论】:

    • 太好了,太好了。谢谢你:)
    • 如果我需要使用那个特殊的孩子,比如说我需要改变它的 x 值怎么办?
    • @Fahim getChildByName("thename").x = 20;
    • @Amarghosh 我正在这样做:MovieClip(competencyContainer.getChildByName(String("test")).x)+= 80;我得到这两个错误: 1105:赋值目标必须是参考值。 5000:“com.felinefrenzy.user”类必须是“flash.display.MovieClip”的子类,因为它链接到该类型的库符号。
    • 1105:括号放错了位置。此外,String("test") 是多余的——“test”是一个字符串对象。呼叫MovieClip(competencyContainer.getChildByName("test")).x += 80;5000:这与给定的语句无关。创建com.felinefrenzy.User 类并从MovieClip (public class User extends MovieClip) 扩展它
    猜你喜欢
    • 2019-01-24
    • 2021-12-19
    • 2013-06-13
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多