Показать сообщение отдельно
Старый 02.09.2013, 13:13
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Если есть исходник, надо найти в нем момент окончания воспроизведения и продиспатчить там всплывающее событие, лучше какого-нибудь своего типа, допустим,
Код AS3:
dispatchEvent(new Event("playEnd", true));
Для покадровой анимации этот код надо вписать в последнем кадре (или даже добавить еще один кадр для этого кода). Для сложного банера с программной анимацией надо определить "конец" самостоятельно)). В своем лоадере соответственно подписываетесь на это событие. Если банер не будет его посылать, просто ничего не произойдет, так что подписываться можно на все банеры безбоязненно.
Однако, конечно же нужна определенность. Можно в отредактированных банерах завести публичное свойство (public) var isEndDispatcher:Boolean = true; и спрашивать его у загруженных банеров
Код AS3:
if(baner["isEndDispatcher"] == true) // не выполнится если такого свойства нет или оно = false
{
	baner.addEventListener("playEnd", handlerBanerPlayEnded);
} else if (baner is MovieClip && baner.totalFrames > 1) { 
	// подписываемся на ентерфрейм и считаем кадры
}
Можно так же не заводить публичное свойство, а использовать интерфейс-метку. Но это непросто для банеров, поскольку они редко имеют Документ-класс, оформленный как класс в отдельном файле .as
Цитата:
И если нет исходника, помимо "построенных на обычной покадровой мультипликации" какие еще есть
Боюсь, что никаких.
Цитата:
чтобы в случае невозможности определить totalFrames, просто его не добавлять в общий список?
Ну, не добавлять и все)) В чем вопрос то? Если нет публичного свойства, а тоталФреймс == 1 или класс документа не МувиКлип а Спрайт (то есть точно не содержит покадровой анимации), то не добавляете его в плейлист, или как-то помечаете и показываете в течение заранее выбранного времени (ну то есть показываете 3 секунды и баста).
__________________
Reality.getBounds(this);