PDA

Просмотр полной версии : Загрузка клипов разной длины


PerlProgrammist
26.06.2006, 15:26
Здравствуйте.
Первый раз на этом форуме, очень надеюсь на помощь.
Итак, задача. В родительский клип подгружаются несколько баннеров. Количество заранее не известно. После загрузки они крутятся в цикле. Баннеры могут быть как картинками, так и swf-ками. Собственно, проблема: каждый загруженый банер должен показываться весть свой цикл (если он анимирован), +10 секунд. Как определить, что загруженый баннер проигрался до конца? Баннеры могут быть любой сложности, так что просто считать кадры - не прокатит. Сам уже, кажется, все перепробовал. Помогите, пожалуйста!!!

PS: решение сгодится любыми средствами. Не только Flash, но и Perl, PHP, JS... Да хоть Basic, лишь бы работало!

mr.N
26.06.2006, 15:44
А баннеры твои или нет?
То есть ты имеешь доступ к их редактированию или нет?
Если да, то тогда только как теория можно сделать так. Каждый баннер в основной ролик передаёт параметр, что типа он начал проигрываться и параметр в конце ролика, что он закончил проигрываться и останавливается, с этого времени отсчитывается 10 секунд за которые грузится следующий баннер.
Чтобы узнать количество баннеров - это другими средствами, не флэшом, также чтобы отличить картинку от ролика, через скрипт передаётся определённый параметр.

PerlProgrammist
26.06.2006, 15:56
Нет, баннеры не мои, в том и проблема. Узнать количество баннеров и отличить их от картинки - не проблема. Это я сделал. А вот как узнать, что загруженный баннер докрутился - черт его знает. Если бы была простая анимация - можно было бы через totalframes узнать количество кадров, а потом в onEnterFrames проверять. Но если в баннерах Action - это не прокатит. Есть еще какие-то варианты?

iNils
26.06.2006, 16:01
Только ручками. Сначала просматривать баннер, потом при загрузке передавать параметр указывающий условное количество кадров.

В целом подход не верен. Вы должны разработать требования, и предоставляемые баннеры должны им соответствовать.

mr.N
26.06.2006, 16:02
Есть ещё один вариант, но не знаю насколько он подойдёт. Обычно баннеры имеют не менее 2-х кадров. Хотя не факт, но всё равно можно проверять когда баннер снова перейдёт на первый кадр, и между этими переходами установить время для каждого конкретного баннера. То есть это будет время его проигрывания. Затем это всё дело можно в массив переделать. Чтобы этот переход был не так заметен (что баннер начал заново проигрываться, а ты его резко оборвал и загружаешь следующий) сделай затухание по альфе.

iNils
26.06.2006, 16:04
Обычно баннеры имеют не менее 2-х кадров.С чего такой вывод? Зависит от предпочтений. У меня все баннеры однокадровые для рута.

mr.N
26.06.2006, 16:20
Ну вот я и говорю, что не факт :)

PerlProgrammist
26.06.2006, 17:35
Спасибо всем за ответы. Если честно, даже не ожидал, что так сразу отклик будет.
В том и проблема, что баннеры однокадровые зачастую. Что подход неверный - может быть, но это не обсуждается. Клиент всегда прав. А он хочет полную независимость от того, что там человек грузит у себя в аккаунте. Надо, чтобы работало. В принципе, есть вариант. По корявости превосходит все, что я до сих пор делал :). Смысл - дать человеку после загрузки быннера самому указать, сколько он должен быть виден на экране. Но это из рук вон плохо. Хочется, чтобы от юзверя минимум требовалось. Типа, залил и из сердца вон.

Кстати, а если упростить немного и предположить, что все баннеры не зацикленые, а проигрываются 1 раз и останавливаются? Но тоже - либо кадрики меняются, либо экшеном что-то делается. Можно ли как-то отследить конец?

iNils
26.06.2006, 18:08
Клиент всегда прав. А он хочет полную независимость от того, что там человек грузит у себя в аккаунте.Пусть он сунется со своим "хотением" на любую баннерную площадку. Его пошлют, потому у каждой площадки есть стандарты по весу, производительности и методам передачи ссылок. И клиент обязан им следовать.
Кстати, а если упростить немного и предположить, что все баннеры не зацикленые, а проигрываются 1 раз и останавливаются?А с чего вдруг? Только если требования такие предъявили.

PerlProgrammist
26.06.2006, 18:16
В данном случае, клиент - мой шеф на основной работе. Так что много ему не докажешь...

И это, пожалуй, единственное допустимое ограничение.

Что ж, видимо, придется остановиться на варианте с ручным указанием времени. Изврат, конечно, но можно пропихнуть как возможность задать для баннера проигрывание нужное количество раз :).

Если появятся у кого-нибудь новые мысли на эту тему - буду очень благодарен. Спасибо за помощь.

iNils
26.06.2006, 18:27
Ну покажи ему данный топик, если он тебе не верит на слово :) От того что он хочет, ничего не изменится. Эта задача сродни перевода swf в avi. Если не делать swf с учетом перевода (программно что-нибудь), то ничего не получится.

PerlProgrammist
26.06.2006, 18:37
Интересное решение :).
Ладно, в принципе, имеющийся вариант, вроде устроил.
У меня еще вопрос. Я гружу несколько баннеров, а потом в цикле кручу их с разными эффектами. Пкрвый раз бвннеры грузятся из вне, а потом просто "тасую колоду". То есть через swapDepths вытаскиваю по очереди баннеры на верх стопки.
Есть ли, реально, необходимость так делать, или можно просто в цикле их каждый раз грузить заново, положившись на кеш браузера? Или, может, у плеера свой кеш имеется? Это бы сильно упростило код.

aksios
26.06.2006, 20:56
2 великий iNils!
Я чета не догоняю, почему нельзя в данном случае юзать _totalframes и _currentframe - где нибудь в MovieClip.prototype.onLoad?

__i
26.06.2006, 21:14
1 кадр в ролике, сколько у него _totalframes ?

aksios
26.06.2006, 21:27
1 кадр в ролике, сколько у него _totalframes ?
Хм... выдает 1.

etc
26.06.2006, 21:30
где нибудь в MovieClip.prototype.onLoad?
Это чревато.

aksios
26.06.2006, 21:32
Это чревато.
Ну для чета эта переменная то есть? Мож есть кие нибудь гуманные методы ее пользования?

PerlProgrammist
26.06.2006, 21:59
2 великий iNils!
Я чета не догоняю, почему нельзя в данном случае юзать _totalframes и _currentframe - где нибудь в MovieClip.prototype.onLoad?

Можете объяснить, зачем здесь еще prototype? Мне такая конструкция в AS еще не встречалась. (я, собственно, вообще больше по Perl специализируюсь, так что мне тут многое не встречалось :)).