Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   доступ к маске клипа из библиотеки (http://www.flasher.ru/forum/showthread.php?t=169366)

Nesterva 03.10.2011 19:06

доступ к маске клипа из библиотеки
 
День добрый! У меня есть swf с мувиком в библиотеке. У этого мувика есть маска слоя. Как через actionscript получить доступ к этой маске? Перебираю всех потомков на всех кадрах и ни у кого не задана маска (свойство mask == null). Как так? Сама маска содержится в мувике, но как узнать что этот символ является маской?

in4core 03.10.2011 19:24

А собственно каким это образом вы перебираете всех потомков во всех кадрах? покажите код. И маска это шейп или мувик?

Nesterva 03.10.2011 19:31

код надо упрощать, не охота) перебираю рекурсивно. маска - шейп

КорДум 03.10.2011 19:46

Как вариант: задайте ей name. И getChildByName выдаст маску.

Nesterva 03.10.2011 19:47

набросала тестовую функцию:

Код AS3:

private function findMask(content:DisplayObject):void {
                                if (content.mask != null) {
                                        Alert.show('has mask')
                                }
                                if (!(content is DisplayObjectContainer)) {
                                        return;
                                }
                                if (content is MovieClip) {
                                        var clip:MovieClip = content as MovieClip;
                                        for (var i:uint = 0; i<clip.totalFrames; i++) {
                                                clip.gotoAndStop(i);
                                                for (var j:uint = 0; j<clip.numChildren; j++) {
                                                        findMask(clip.getChildAt(j));
                                                }
                                        }
                                } else
                                if (content is Sprite) {
                                        var sp:Sprite = content as Sprite;
                                        for (j = 0; j<sp.numChildren; j++) {
                                                findMask(sp.getChildAt(j));
                                        }
                                } else {
                                        Alert.show('левый объект');
                                }
                        }

Добавлено через 2 минуты
Цитата:

Сообщение от КорДум (Сообщение 1036428)
Как вариант: задайте ей name. И getChildByName выдаст маску.

Да, но мне еще нужно знать чья это маска

Добавлено через 18 часов 14 минут
похоже, что единственный вариант - это переделать все анимации с масками и задать соответствующие имена для масок и для маскируемых символов (msk1 -> masked1) :(


Часовой пояс GMT +4, время: 16:57.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.