Форум 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)
-   -   Управление загруженным клипом (http://www.flasher.ru/forum/showthread.php?t=141753)

wolfgang 04.07.2010 11:16

Управление загруженным клипом
 
Здравствуйте!
Возникла задача управления загруженным, с помощью функции loadMovie(),внешним swf клипом. А именно установка свойств прозрачности и цвета для отдельных элементов библиотеки внешнего ролика.
Или ,может быть ,пересылкой параметров из исходного ролика во внешний ,вследствии обработки которых в загруженном клипе можно было устанавливать значения цвета и прозрачности для заданных элементов.

mooncar 04.07.2010 11:43

Для ваших целей надо использовать не функцию loadMovie(), а класс MovieClipLoader, иначе вы не сможете корректно произвести необходимые действия над загруженным: нужно отследить момент гарантированной загрузки с помощью метода этого класса onLoadInit (Фактор асинхронности работы AS очень сильно выражен, когда ролик размещен на сайте).
Открывайте хелп и смотрите пример.
И второе - в библиотеке загруженного ролика вы поменять ничего не сможете, ровно как и в любой библиотеке ролика после компиляции.
Произвести необходимые изменения возможно только с уже добавленными (вручную либо программно) на сцену символами.

wolfgang 04.07.2010 16:31

Предположим я загружаю ролик таким образом:
Код AS1/AS2:

var mcLoader:MovieClipLoader = new MovieClipLoader();
 
mcLoader.loadClip("clip.swf", _root.clip);

В рабочей области внешнего загруженного клипа есть символ simbol
Можно ли как нибудь изменить цвет этого символа,а не всего ролика в целом?
Вот это не работает:
Код AS1/AS2:

 
Fill1=new Color(_root.clip.simbol);
Fill1.setRGB(0xFF0000);


mooncar 04.07.2010 18:09

Цитата:

Сообщение от wolfgang (Сообщение 919813)
Вот это не работает:

Вы пропустили мои слова о onLoadInit и асинхронности. Либо невнимательно смотрели примеры.
Код AS1/AS2:

var mcLoader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
 
listener.onLoadInit = function  (target_mc:MovieClip)
{
        Fill1 = new Color(target_mc.simbol); //target_mс  - это и есть  _root.clip 
        Fill1.setRGB(0xFF0000);
};
 
mcLoader.loadClip("clip.swf", _root.clip);

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

wolfgang 04.07.2010 18:46

Спасибо.

wolfgang 23.08.2010 20:54

Ситуация такая. клип A находится на сервере.В него грузится клип B. Запускаю из среды разработки. Клип B подгружается в A и нормально меняются цвета у символов (как задано в функции).Но если я клип A загружаю на сервер - клип B грузится в A но никаких изменений над символами загруженного клипа не происходит.
Проверял- все процедуры и функции вызываются,но события:
Код AS1/AS2:

Fill1 = new Color(target_mc.simbol);
Fill1.setRGB(0xFF0000);

не меняют цвет символа загруженного клипа

mooncar 23.08.2010 21:14

У вас обе swf-ки лежат на одном сервере, одна грузит другую и функция, принадлежащая первой, не меняет цвет символа в загруженной, правильно я понял? С А и В не очень понятно объяснили.

wolfgang 23.08.2010 22:08

Да.Оба swf файла лежат на одном сервере.И один клип загружается в другой при помощи MovieClipLoader.
фрагмент ClipA.swf:
Код AS1/AS2:

var mcLoader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
listener.onLoadInit = function  (target_mc:MovieClip)
        {
 
                Fill = new Color(target_mc.simbol1);//заливка цветом
                Fill.setRGB("0x00FF00");//не работает на сервере
 
        };
 
        mcLoader.addListener(listener);
mcLoader.loadClip("http://www.mysite.ru/flash/clipB.swf",all);

Клип B -тот который я подгружая в клип A.
Клип B -находится на сервере.

Клип A -основной код,в него загружается клип A.
Клип A -находится на сервере,и на локальной машине(т.е. тестирую сначала в среде разработке, потом на сервере).

Клип A сначала запускаю прям из среды разработки Ctrl+Alt+Enter.Все работает нормально:Клип B загружается в Клип A и символ КлипB.simbol1 меняет свой цвет на зеленый.

Далее публикую клип A и загружаю на сервер swf файл.
Запускаю клип A(контейнер для загрузки клипа B) на сервере:
Результат:
клип B подгружается,НО simbol1 не закрашивается заданным "0x00FF00" цветом.

rainbowrussia 23.08.2010 22:13

Замените абсолютный путь на относительный, а то может вы первую флешку открывается с сайта "mysite.ru", а вторую с "www.mysite.ru".

mooncar 23.08.2010 22:33

Да, сравните адреса - тот, с которого загружается основной ролик, и путь в load для загружаемого. Сделайте так, чтобы адреса совпадали. Относительность пути тут как бы не при чем, просто флешка склонна считать домен с алиасом с "www" другим сервером.

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

А в среде разработки много чего работает, что отказывается работать при выкладывании на хост. Это связано с секьюрными моментами флеша.

UPD:
1. Попробуйте поставить именно относительный путь в load, например относительно корня сайта:
Код AS1/AS2:

mcLoader.loadClip('/flash/clipB.swf', all);

Так должно заработать.
Лучше использовать именно этот вариант, потому что нет гарантии, что у юзера в адресной строке будет именно тот адрес домена, который стоит в load.

2. И наконец, в клипе B можно прописать строку
Код AS1/AS2:

System.security.allowDomain('mysite.ru');

Тогда и с www заработает, и без, вообще с любого домена 3-го уровня.


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

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