Просмотр полной версии : Обновление содержимого броузера?
Killer_13
05.05.2007, 19:53
Припустим есть флеш сайт с прелоадером, всё загрузилось воспроизвелась анимация и юзьвер нажимает F5 - у меня происходит обновление с первого кадра, - тоисть обновление захватывает прелоадер.
Как сделать чтоб при о6новлении сайта анимация началась со второго кадра, - тоисть чтоб не было видно прелоадера?
У меня так сделано, - что после всей загрузки юзер должен натиснуть кнопочку - тогда начинает воспроизводится анимация.
Killer_13
05.05.2007, 20:49
:) - посмотрел в поиске по "SharedObject" - ничего не разобрался, - может кто подскажет мне что то конкретней?
Как реально это сделать? :)
Tardos Mors
05.05.2007, 21:07
var so:SharedObject = SharedObject.getLocal ("some_name");// Вместо some_name любое имя. Хотя оно не имеет значния, т.к. для каждого домена переменные хранятся отдельно
if (so.data.reload== true)
{
gotoAndPlay ("anim");// Кадр с анимацией
}
else
{
so.data.reload = true;
so.flush();
gotoAndStop ("preloading");// Кадр с прелоадером
}
Только надо сажать время последнего захода на сайт, а потом проверять разницу. Час, допустим, прошел - показывай анимацию, не прошел - обновляй время последнего захода на сайт и не показывай анимацию.
Если есть php на сервере, можно открывать сессию и впечатывать flashvars-ами флажок для показа прелоудера, тогда это будет жить до закрытия броузера.
Killer_13
05.05.2007, 22:50
var so:SharedObject = SharedObject.getLocal ("some_name");// Вместо some_name любое имя. Хотя оно не имеет значния, т.к. для каждого домена переменные хранятся отдельно
if (so.data.reload== true)
{
gotoAndPlay ("anim");// Кадр с анимацией
}
else
{
so.data.reload = true;
so.flush();
gotoAndStop ("preloading");// Кадр с прелоадером
}
Вставил єтот код в 1 кадр - после кода прелоадера (сделал всё как написано - поставил метки). Но у меня почему то тепер при анализе ролика прелоадер доходит до 30% и автоматически начинает грузить анимацию, хотя по моему задуму нужно сначала нажать кнопочку чтоб запустилась анимация - до этого всё работало нормально..
Или я что то не так делаю?
Killer_13
05.05.2007, 22:52
Обновляет браузер - так как я хотел. - но пропал прелоадер.. :(
Tardos Mors
05.05.2007, 23:52
Код должен стоять до прелоадера.
Если нужна кнопка - то вместо gotoAndPlay("anim") нужно написать gotoAndStop ("start_button"), и в кадре anim создать кнопку перехода на кадр с анимацией.
Хотя если честно не вижу смысла в этом SharedObject. ИМХО лучше сделать по другому - перед появлением прелоадера нужно проверить, весь ли ролик загружен. Если он в кэше браузера (т.е. загружать ничего не надо), то прелоадер не нужен, и можно сразу показывать кнопку старта анимации. А если нет, то показывать прелоадер:
// В первом кадре, перед прелоадером
if (getBytesLoaded() >= getBytesTotal())
{
gotoAndStop ("start_button");
}
else
{
gotoAndStop ("preloading");
}
var so:SharedObject = SharedObject.getLocal ("some_name");
var now = (new Date()).getTime();
var timeOut = 1000*10;// 10 секунд, для теста
// var timeOut = 1000*60*60; // час, для работы
function refreshLastVizit(){
so.data.lastVizit = (new Date()).getTime();
}
setInterval(refreshLastVizit, timeOut/2 );
var deltaT = now - ( so.data.lastVizit || 0 );
refreshLastVizit();
if ( deltaT <= timeOut ){
trace ("hello again");
gotoAndPlay ("anim");// Кадр с анимацией
}else{
trace ("hello first time");
gotoAndStop ("preloading");// Кадр с прелоадером
}
Tardos Mors, ваш код убивает прелоудер навсегда. flush() не нужен.
Killer_13
05.05.2007, 23:59
Спасибо, - сейчас попробую... :)
Ещё один такой наболевший вопросик.
Можно как то с помощью флеша (скрипт какой то?) проверять наличие флеш плеера перед загрузкой и если его нет - то устанавливать? (в поиске смотрел - но нашёл что это можно сделать только с помощью РНР).
Все делают так:
http://blog.deconcept.com/swfobject/
Killer_13
06.05.2007, 01:39
Kikasso - спасибо, - всё работает. :)
Как я понял этот код
var timeOut = 1000*10;// 10 секунд, для теста
делает что то типа очистки - когда я загружаю сайт в промежутке времени больше 10 сек 2раза, то показывается прелоадер, если на протяжении 10 секунд запускаю второй раз, - то прелоадер уже в браузере не грузится.. :) - правильно я понял?
Я изменил интервал до 5 секунд, - мне так удобней, - огромное спасибо!!!
Поставьте час. Или день.
setInterval(refreshLastVizit, timeOut/2 );
Вот эта строчка регулярно обновляет значение последнего визита, пока флешка на виду. Уходите со страницы - значение перестает обновляться. Теперь если в течение часа (если поставите час) человек вернется, прелоудера не будет. Да он и не нужен, все в кеше.
5 сек - слишком мало, мне кажется. Поставьте timeOut минут на 10, что-ли. А еще лучше час или два.
Значение задается в миллисекундах, не забывайте.
Зы - еще бы не работало. Я ж проверил.
Кстати, посмотрите на замечание Tardos Mors-a. Клип должен быть скачан. Если клипа нет, по-любому надо прелоадер показывать. А мой код сгодится для заставки, чтобы 100 раз ее не показывать.
Tardos Mors
06.05.2007, 10:02
2Kikasso - я так понял, что смысл был в том, чтобы прелоадер показался только один раз, а если страница обновляется, то флэшка доставалась из кеша браузера, и прелоадера не было.
2Killer_13 - с помощью флэша можно проверить версию плеера. А если он не установлен совсем, то ничего не получится. Юзай SWFObject для вставки флэша в страницу.
ЗЫ - тьфу, вторую страницу и не заметил:rolleyes:
Tardos Mors, вы похоже правильнее поняли. Мой код сгодится, чтобы заставку каждый раз не смотреть (хозяйке так сказать на заметку), а по сути проблемы ваш способ уместнее.
Вообще перечитал весь топик и понял, что проблемы-то и нету.. Ну мелькнет полосочка - загрузили, ура.
Killer_13
07.05.2007, 00:44
:) - нет - проблема была, - потому, что после загрузки я себе сделал кнопочку, - тоисть когда сайт загрузился 100% юзер должен кликнуть на кнопке - и тогда начинается воспроизведение анимации.
А когда шло обновление, то постоянно грузился прелоадер, - и нужно было нажимать кнопочку чтоб грузился сайт. Тепер благодаря вам проблема устранена!
Ещё раз спасибо!
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.