Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.06.2012, 19:27
dkart01 вне форума Посмотреть профиль Отправить личное сообщение для dkart01 Найти все сообщения от dkart01
  № 1  
Ответить с цитированием
dkart01

Регистрация: Apr 2012
Сообщений: 80
По умолчанию Обращение к timeline внешнего swf

Здравствуйте, есть 2 мувиклипа. (Приложены к теме)
1) А - главный
2) Б - зависимый, в котором 3 кадра.

Как можно управлять из ActionScript клипа А, проигрыванием, остановкой клипа Б.
Б подгружается в А через MovieClipLoader.

Например, в А написано

Код AS1/AS2:
_3dmodel.gotoAndStop(2);
Но клиб Б не останавливается.
Вложения
Тип файла: zip Desktop.zip (11.8 Кб, 25 просмотров)

Старый 04.06.2012, 19:32
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
1. Не называйте "мувиклипами" swf-ролики, мувиклип - это символ класса MovieClip.
2. Что такое "зависимый"? Может быть "загружаемый"?
3. Исходники в CS6 - это круто, но мало кто тут сможет их открыть и посмотреть, что там у вас. Сохраните максимум для CS5.
Или хотя бы приведите здесь полный код.

Могу предположить только, что вы, например, не дожидаетесь загрузки второго ролика, и выполняете gotoAndStop не из обработчика onLoadInit.
__________________
Идите первым!


Последний раз редактировалось mooncar; 04.06.2012 в 19:38.
Старый 05.06.2012, 10:47
dkart01 вне форума Посмотреть профиль Отправить личное сообщение для dkart01 Найти все сообщения от dkart01
  № 3  
Ответить с цитированием
dkart01

Регистрация: Apr 2012
Сообщений: 80
Спасибо за поправки.
Есть 2 swf, 001- главный, 002- загружаемый в 001.
Нужно в 001 написать команду, чтобы загружаемый в него 002 остановился на 2 кадре внутри себя.

Выложил в формате cs5 (меньше никак).

Код 001

Код AS1/AS2:
_root.createEmptyMovieClip("_3dmodel",-19000);
 
var myLoader:MovieClipLoader = new MovieClipLoader();  // Подключаем клип 
myLoader.addListener(this); 
myLoader.loadClip("002.swf", _3dmodel); 
 
_3dmodel.gotoAndStop(2);
Так же непонятная строчка

Код AS1/AS2:
myLoader.addListener(this);
Вложения
Тип файла: zip Desktop.zip (15.8 Кб, 27 просмотров)


Последний раз редактировалось mooncar; 05.06.2012 в 12:14.
Старый 05.06.2012, 12:02
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
"Также непонятная строчка" - в этом корень вашей неудачи. Это слушатель загрузки, который у вас сейчас остается без дела, хотя и добавлен в этой строке к загрузчику.
То есть он "узнает", что загрузка закончена, но у вас сейчас на это событие нет никакой реакции, поскольку нет обработчика этого события.
А только в этом случае можно оперировать загруженным контентом, поскольку код работает асинхронно по отношению к процессам загрузки.

Код AS1/AS2:
_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); //приготовления закончены, загружаем
Еще вот что. Отрицательные глубины зарезервированы для объектов, создаваемых руками, используйте для программного создания объектов положительные глубины, начиная от 0 включительно.
__________________
Идите первым!


Последний раз редактировалось mooncar; 05.06.2012 в 12:21.
Старый 05.06.2012, 16:49
dkart01 вне форума Посмотреть профиль Отправить личное сообщение для dkart01 Найти все сообщения от dkart01
  № 5  
Ответить с цитированием
dkart01

Регистрация: Apr 2012
Сообщений: 80
Спасибо!

1) Всегда ли когда требуется обращение к кадру в swf нужно будет вызывать функцию onLoadInit из 4 строк
2) попробовал заменить "this" в addListener и.onLoadInit на другое имя и у меня переставало работать

Старый 05.06.2012, 22:05
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Не жалейте строк в редакторе кода Компилятору все равно - он сделает байт-код, как ему лучше и понятнее.

onLoadInit - это название события, обработчик которого задается анонимной функцией в вышеприведенном мною коде.
Но я бы писал так в своем проекте:
Код AS1/AS2:
_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, более соответствует принципу универсальности 
//и удобству в случаях переделок.
1. Все начальные действия с загруженным контентом нужно начинать из обработчика события загрузки. Перечитайте мой предыдущий пост и комментарии в коде.
2. Что значит на "другое имя"? Нужно не "другое имя", а объект-слушатель, который создаем, как я показал тут. В коде этого поста я создаю специальный объект-слушатель, как "по учебнику", а не использую текущий таймлайн (точнее, текущий объект, таймлайн - это понятие из IDE), как было в предыдущем посте в целях экономии ресурсов. this там ссылался на _root и сам _root слушал события.

Постарайтесь понять, что к чему.
Постарайтесь понять, что в AS используется событийная схема и одна строка кода, записанная под другой не означает, что она обязательно выполнится именно после нее. Иначе никак - нужно отслеживать готовность загрузки.
__________________
Идите первым!


Последний раз редактировалось mooncar; 06.06.2012 в 03:34.
Старый 06.06.2012, 12:41
dkart01 вне форума Посмотреть профиль Отправить личное сообщение для dkart01 Найти все сообщения от dkart01
  № 7  
Ответить с цитированием
dkart01

Регистрация: Apr 2012
Сообщений: 80
Благодарю вас за подробный ответ и уделённое время.

mooncar, а электронный help от Adobe для вас был достаточен или вы использовали дополнительные учебные материалы, если использовали, можете поделиться названиями (ссылками на ресурсы).

Старый 06.06.2012, 15:04
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 8  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Хелп + книга "Flash MX 2004. Action Script. Библия пользователя".
Только на нее не смотрите, изучайте AS3 по известной литературе (тема на форуме обсуждалась, новых тем не надо о литературе).
__________________
Идите первым!

Создать новую тему Ответ Часовой пояс GMT +4, время: 14:35.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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