Маскировка многих объектов с помощью 1 маски с использованием `getChildAt(i).mask` не работает

Я пытаюсь применить маску ко всем объектам на сцене, кроме пары. Разных объектов очень много, и в будущем их количество будет меняться, поэтому я хочу, чтобы маскирование происходило динамически.

Я написал этот код:

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;

работает безупречно, но только для этого одного объекта. Есть идеи, что случилось?

Никаких ошибок не выдается, объекты просто не маскируются.


person BumbleShrimp    schedule 01.05.2012    source источник


Ответы (3)


Дальнейшие исследования показали, что я не могу применить одну маску к нескольким объектам. Мне нужно иметь маску для каждого объекта или поместить все объекты в один контейнер и замаскировать этот контейнер.

Очевидно, вы можете использовать слой для маскирования нескольких объектов на временной шкале, но вы не можете сделать это программно, не добавляя все объекты в один контейнер. К сожалению, я не могу сделать это без перекодирования всего приложения, поэтому я буду использовать временную шкалу для маскировки.

person BumbleShrimp    schedule 01.05.2012

Я бы посоветовал вам лучше переместить все мувиклипы, чтобы они были замаскированы в один мувиклип. Это было бы проще, если бы это было возможно в вашем случае.

person Vishwas    schedule 01.05.2012

Как насчет for each

for (var mc:movieClicp in this){
                  mc.mask=mask_}
person al03    schedule 01.05.2012
comment
Я получаю C:\[path]\classes\ivk_kfz.as, Line 36 1067: Implicit coercion of a value of type String to an unrelated type flash.display:MovieClip. ---- Строка 36 for (var mc:MovieClip in this){ - person BumbleShrimp; 01.05.2012
comment
Дальнейшие исследования показали, что я не могу применить одну маску к нескольким объектам. Мне нужно иметь маску для каждого объекта или поместить все объекты в один контейнер и замаскировать этот контейнер. - person BumbleShrimp; 01.05.2012