Добавление загруженного изображения с помощью addChild к маскируемому объекту на временной шкале - PullRequest
1 голос
/ 20 мая 2011

Я искал что-то подобное здесь, но не нашел подсказки о том, что происходит.

У меня есть объект Movie Clip с временной шкалой, и у него есть 3 слоя: слой, чтобы остановить временную шкалув последнем кадре слой с обычным рисунком с атрибутом mask и слой, содержащий целевой мувиклип с экземпляром с именем 'target', который маскируется слоем выше.

Рисование очень простое, даже немувиклип, просто векторный рисунок.Предполагается, что целевой видеоклип будет отображаться только в тех областях, где слой маски имеет некоторый рисунок, верно?

Итак, я создал метод для загрузки изображения, прослушивания полностью загруженного события и добавления изображения к целизамаскированный мувиклип, но он исчезает после первого кадра!Если я удаляю слой с маской рисунка, работает нормально.Любые подсказки?

Вот уменьшенная версия кода.Заранее спасибо.

package  
{
    import flash.display.*
    import flash.events.Event;
    import flash.net.URLRequest;

    public class Main extends MovieClip
    {
        public function Main() 
        {
            var loader:Loader = new Loader()
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, listenComplete)
            loader.load(new URLRequest('img.jpg'));

        }

        private function listenComplete(e:Event)
        {
            target.addChild(e.currentTarget.content)

        }

    }

}

Ответы [ 3 ]

1 голос
/ 23 мая 2011

Ну, у меня есть решение - не совсем то, что я хотел, но оно хорошее.

Я создал новый мувиклип с рисунком, назвал его «maskTimeLine», вставил все кадры с остановкой в ​​конце и оставил его как обычный слой. Затем я создал его на слое над моим целевым слоем, удалил дополнительные кадры (который теперь принадлежит объекту maskTimeLine) и попытался снова, на этот раз добавив target.mask = maskTimeLine после метода target.addChild.

Это работает! :)

Я полагаю, что у Flash есть некоторые проблемы при работе с addChild на слое под маской с временной шкалой (вот и все эти ситуации вместе. Я сделал много addChild () для клипов анимированных фильмов и добавил детей слой ниже масок тоже, но никогда не делали обе вещи в одном и том же объекте).

Надеюсь, это поможет и другим. Спасибо всем за потраченное время!

1 голос
/ 30 декабря 2011

У меня была такая же проблема, но я ее исправил. 3 слоя:

Слой 1 (верхний слой фрагмента ролика) был маской. Слой 2 был маскируемым контентом. Слой 3 был немаскированным слоем.

Затем я динамически добавил символ / фрагмент ролика к этому во время выполнения. Не появится Автоматически маскируется маской слоя 1.

Чтобы исправить это, я создал пустой слой над остальными 3, затем добавил что-то к этому слою. Если вы не добавляете что-то в слой, пустой слой игнорируется и проблема остается. Но как только вы добавите еще один слой поверх всего и поместите на него что-то, Flash поместит ваш динамический контент в самый верхний / немаскированный слой.

Weired.

0 голосов
/ 21 мая 2011

Это что-то вроде следующего.К сожалению, нет времени для тестирования кода, но один из них правильный.

target.addChild(loader.contentLoaderInfo);
or
target.addChild(loader.content);
or
target.addChild(loader);
or
// event targeting
target.addChild(e.currentTarget.contentLoaderInfo)
or
target.addChild(e.currentTarget);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...