使用`getChildAt(i).mask`使用1个掩码屏蔽许多对象

时间:2012-05-01 02:04:35

标签: actionscript-3 flash flash-cs5.5

我正在尝试将遮罩应用于舞台上的所有对象,除了一对。有很多不同的对象,它们的数量将来会发生变化,因此我希望动态完成屏蔽。

我写了这段代码:

var i;

for (i = 0; i < this.numChildren; i++) {
    if (this.getChildAt(i).name!="stage_kelp_bg" && this.getChildAt(i).name!="magnifier_mask") {
        this.getChildAt(i).mask = this.magnifier_mask;
    }
}

上面的代码在文档类的构造函数方法中。只需说明:

this.stage_kelp.mask = this.magnifier_mask;

完美无瑕地工作,但仅限于那一个对象。知道什么是错的吗?

不会抛出任何错误,对象只是不会被掩盖。

3 个答案:

答案 0 :(得分:1)

进一步的研究表明,我不能将1个面具应用于多个物体。我必须为每个对象设置一个掩码,或者将所有对象放入一个容器中并掩盖该容器。

显然,您可以使用图层来屏蔽时间轴上的多个对象,但如果不将所有对象添加到一个容器,则无法以编程方式执行此操作。遗憾的是,如果不对整个应用程序进行重新编码,我就无法做到这一点,因此我将使用时间轴来掩盖事物。

答案 1 :(得分:1)

我建议你最好将所有的动画片段移动到一个动画片段中。如果您的情况可行,这将更容易。

答案 2 :(得分:0)

for each

怎么样?
for (var mc:movieClicp in this){
                  mc.mask=mask_}