Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   как наложить маску на подгружаемый swf во флэш (http://www.flasher.ru/forum/showthread.php?t=126757)

scorpi_Natalia8 26.06.2009 14:56

как наложить маску на подгружаемый swf во флэш
 
Здравствуйте, у меня проблема. Если можете, помогите, пожалуйста. У меня созданы две презентации из фотографий на флэше. Их принцип в том, что фотографии двигаются горизонтально и вертикально. И мне естественно нужно проецировать только рабочее поле, а не все объекты полностью. И еще мне нужно эти презентации подгружать во флэш при нажатии на кнопки, что у меня успешно делается.
Теперь моя проблема…..при подгружании презентации проигрываются в полном объеме, а мне нужно только рабочую область. Как мне сделать, подскажите! Возможно, ли наложить маску на подгружаемую swf. Или как?????

aksios 26.06.2009 16:03

Цитата:

Сообщение от scorpi_Natalia8 (Сообщение 830952)
Возможно, ли наложить маску на подгружаемую swf. Или как?????

Здравствуйте, это возможно. Скорее всего, Вы пытаетесь загрузить внешний клип на основную временую линейку, а не как нужно- в контейнер.
Предположим, у нас есть подгружаемый файл.
В основном файле на первом слое рисуем прямоугольничек, выделяем,конвертируем в мувиклип. В свойствах (когда он уже создан - это будет у него как бы второе имя для вызова из скриптов) пишем ему имя container_mc и запоминаем его.
Добавляем еще 2 слоя и на верхнем слое пишем код:
Код AS1/AS2:

container_mc.loadMovie("внешний клип.swf", this);

Во втором слое рисуем маску и меняем свойство этого слоя - чтобы он стал маской для первого.
Все готово, тестируем - если оба файла сохранены в одной папке и подгружаемый скомпелирован, то Вы получите его под маской. Ну и двигайте его на здоровье.
Пожалуйста.

scorpi_Natalia8 29.06.2009 14:43

Огроменное ВАМ спасибо! Вы меня спасли!!! СпасибОООООО….СпасиииБОООО ! Получилось!

Но…теперь у меня тогда другой вопрос, как вставить предзагрузчик на этот подгружаемый swf. Везде находила через вставку объекта на второй кадр. А здесь это не пойдет.

udaaff 29.06.2009 14:54

Изпользуйте MovieClipLoader. Этот класс позволяет отслеживать процесс загрузки.

scorpi_Natalia8 30.06.2009 08:27

Можно ли Вас спросить. Как правильнее делать. Моя задача выложить на сайт флэшку (которая подгружается предзагрузкой), на ней есть две кнопки, при нажатии на них должны загружаться внешние флэшки, на которые должны накладываться маски. Как правильнее сделать: наложить маски и предзагрузки для внешних флэшек отдельно и подгружать в основную флэшку в готовом виде, или же маски и предзагрузки для внешних флэшек делать в основной флэшке? Подскажите пожалуйста, если Вам не трудно.

Добавлено через 2 часа 8 минут

Я поняла какая у меня проблема.
Если создавать маску и загружать swf как …..container_mc.loadMovie("внешний клип.swf", this);….
То предзагрузку поставить нельзя.
А если загружать как LoadClip, то маска не накладывается….
Если можете помогите пожалуйста, справиться с проблемой.

aksios 30.06.2009 11:21

scorpi_Natalia8, бог мой, ну что за апы темы.
Это уже второй вопрос.
Ну ладно, давайте сделаем с прелоадером.
Есть несколько способов реализовать загрузку внешнего файла и тут речь о простейшем.
Кодик теперь усложниться, поскольку loadMovie не имеет встроеного прелоадера.

Для начала, нарисуйте прелоадер - прямоугольничек на отдельном слое, конвертируйте в мувиклип и укажите в свойствах имя bar_mc для обращения из кода.

Теперь на отдельный слой в основном клипе добавьте код:
Код AS1/AS2:

function loadSwf(path) {
        _root.bar_mc._visible=true;
        _root.container_mc.loadMovie(path,this);
        _root.onEnterFrame = function() {
                var total = _root.container_mc.getBytesTotal();
                var loaded = _root.container_mc.getBytesLoaded();
                var pr = loaded/total*100;
                _root.bar_mc._xscale = pr;
                if (pr == 100) {
                        delete _root.onEnterFrame;
                        _root.bar_mc._visible=false;
                }
        }
}

Ну и наконец, замените
Код AS1/AS2:

container_mc.loadMovie("внешний клип.swf", this);

на:
Код AS1/AS2:

_root.loadSwf("внешний клип.swf", this);

*Прелоадер будет показывать загрузку файла - локально этот процесс очень быстрый поэтому при тестировании в среде флеша в основном меню нужно и в View->DownloadSettings выбрать эмуляцию загрузки на маленькой скорости.

scorpi_Natalia8 30.06.2009 12:49

Я сильно извиняюсь, но просто не знаю к кому больше обратиться, поэтому и пишу на форум свою проблему. Я практику прохожу, а если не сделаю, то все полетит. А программирую на флэше всего 2 недели.

Я вот не поняла, а что на разных слоях писать коды
Код AS1/AS2:

_root.loadSwf("внешний клип.swf", this);

И

Код AS1/AS2:

function loadSwf(path) {
        _root.bar_mc._visible=true;
        _root.container_mc.loadMovie(path,this);
        _root.onEnterFrame = function() {
                var total = _root.container_mc.getBytesTotal();
                var loaded = _root.container_mc.getBytesLoaded();
                var pr = loaded/total*100;
                _root.bar_mc._xscale = pr;
                if (pr == 100) {
                        delete _root.onEnterFrame;
                        _root.bar_mc._visible=false;
                }
        }
}

А как тогда будет связан клип с функцией loadSwf

У меня вообще мммм…почему то не хочет…так работать. Вроде сделала, как вы написали

Добавлено через 3 минуты
не могли бы вы...если не трудно.....исходник выслать...так будет проще...не могу понять в чем ошибка

Добавлено через 14 минут
На разных делаю или на одном слое…проигрывает swf, но предзагрузчик не работает.

Добавлено через 24 минуты
вот мой исходник

aksios 30.06.2009 13:25

Вложений: 1
Эмм... Ну вот пример для СS3 сохраненный.

scorpi_Natalia8 30.06.2009 13:26

все должно находиться под слоем маски (все слои (коды, container, preload))?

iNils 30.06.2009 13:26

18000
 
scorpi_Natalia8, для оформления своего кода, надо использовать теги [code][/code].


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

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