![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2012
Сообщений: 80
|
Здравствуйте, есть 2 мувиклипа. (Приложены к теме)
1) А - главный 2) Б - зависимый, в котором 3 кадра. Как можно управлять из ActionScript клипа А, проигрыванием, остановкой клипа Б. Б подгружается в А через MovieClipLoader. Например, в А написано Но клиб Б не останавливается. |
|
|||||
|
Модрон-ветеринар
|
1. Не называйте "мувиклипами" swf-ролики, мувиклип - это символ класса MovieClip.
2. Что такое "зависимый"? Может быть "загружаемый"? 3. Исходники в CS6 - это круто, но мало кто тут сможет их открыть и посмотреть, что там у вас. Сохраните максимум для CS5. Или хотя бы приведите здесь полный код. Могу предположить только, что вы, например, не дожидаетесь загрузки второго ролика, и выполняете gotoAndStop не из обработчика onLoadInit.
__________________
Идите первым! Последний раз редактировалось mooncar; 04.06.2012 в 19:38. |
|
|||||
|
Регистрация: Apr 2012
Сообщений: 80
|
Спасибо за поправки.
Есть 2 swf, 001- главный, 002- загружаемый в 001. Нужно в 001 написать команду, чтобы загружаемый в него 002 остановился на 2 кадре внутри себя. Выложил в формате cs5 (меньше никак). Код 001 _root.createEmptyMovieClip("_3dmodel",-19000); var myLoader:MovieClipLoader = new MovieClipLoader(); // Подключаем клип myLoader.addListener(this); myLoader.loadClip("002.swf", _3dmodel); _3dmodel.gotoAndStop(2); Последний раз редактировалось mooncar; 05.06.2012 в 12:14. |
|
|||||
|
Модрон-ветеринар
|
"Также непонятная строчка" - в этом корень вашей неудачи. Это слушатель загрузки, который у вас сейчас остается без дела, хотя и добавлен в этой строке к загрузчику.
То есть он "узнает", что загрузка закончена, но у вас сейчас на это событие нет никакой реакции, поскольку нет обработчика этого события. А только в этом случае можно оперировать загруженным контентом, поскольку код работает асинхронно по отношению к процессам загрузки. _root.createEmptyMovieClip('_3dmodel', -19000); var myLoader:MovieClipLoader = new MovieClipLoader(); // Создаем экземпляр загрузчика //В общем случае в качестве слушателя создается отдельный объект. //Мы же для экономии ресурсов в качестве слушателя используем текущий объект, //(this тут - это ссылка на _root, поскольку код у вас на главном таймлайне) myLoader.addListener(this); this.onLoadInit = function(tgt:MovieClip) //задаем для слушателя обработчик события загрузки { tgt.gotoAndStop(2); //tgt - это аргумент ф-ии - ссылка на _3dmodel, куда загружаем }; myLoader.loadClip('002.swf', _3dmodel); //приготовления закончены, загружаем
__________________
Идите первым! Последний раз редактировалось mooncar; 05.06.2012 в 12:21. |
|
|||||
|
Регистрация: Apr 2012
Сообщений: 80
|
Спасибо!
1) Всегда ли когда требуется обращение к кадру в swf нужно будет вызывать функцию onLoadInit из 4 строк 2) попробовал заменить "this" в addListener и.onLoadInit на другое имя и у меня переставало работать |
|
|||||
|
Модрон-ветеринар
|
Не жалейте строк в редакторе кода
Компилятору все равно - он сделает байт-код, как ему лучше и понятнее.onLoadInit - это название события, обработчик которого задается анонимной функцией в вышеприведенном мною коде. Но я бы писал так в своем проекте: _root.createEmptyMovieClip('_3dmodel', 0); var myLoader:MovieClipLoader = new MovieClipLoader();//создаем загрузчик var lst:Object = new Object(); //тут в качетсве слушателя специальный объект lst.onLoadInit = lstOnLoadInit; //задаем для слушателя функцию - обработчик события загрузки myLoader.addListener(lst); //слушатель будет слушать загрузчик myLoader myLoader.loadClip('002.swf', _3dmodel); //а загрузичк - загружать что надо и куда надо :) function lstOnLoadInit(tgt:MovieClip) { tgt.gotoAndStop(2); } //В принципе можно написать и так: /* function lstOnLoadInit() { _3dmodel.gotoAndStop(2); } */ //Но первая запись, с аргументом tgt, более соответствует принципу универсальности //и удобству в случаях переделок. 2. Что значит на "другое имя"? Нужно не "другое имя", а объект-слушатель, который создаем, как я показал тут. В коде этого поста я создаю специальный объект-слушатель, как "по учебнику", а не использую текущий таймлайн (точнее, текущий объект, таймлайн - это понятие из IDE), как было в предыдущем посте в целях экономии ресурсов. this там ссылался на _root и сам _root слушал события. Постарайтесь понять, что к чему. Постарайтесь понять, что в AS используется событийная схема и одна строка кода, записанная под другой не означает, что она обязательно выполнится именно после нее. Иначе никак - нужно отслеживать готовность загрузки.
__________________
Идите первым! Последний раз редактировалось mooncar; 06.06.2012 в 03:34. |
|
|||||
|
Регистрация: Apr 2012
Сообщений: 80
|
Благодарю вас за подробный ответ и уделённое время.
mooncar, а электронный help от Adobe для вас был достаточен или вы использовали дополнительные учебные материалы, если использовали, можете поделиться названиями (ссылками на ресурсы). |
|
|||||
|
Модрон-ветеринар
|
Хелп + книга "Flash MX 2004. Action Script. Библия пользователя".
Только на нее не смотрите, изучайте AS3 по известной литературе (тема на форуме обсуждалась, новых тем не надо о литературе).
__________________
Идите первым! |
![]() |
![]() |
Часовой пояс GMT +4, время: 14:34. |
|
|
« Предыдущая тема | Следующая тема » |
|
|