Просмотр полной версии : Загрузка Flash только на главной (или при первом посещении)
MrArthur
28.09.2012, 19:39
Здравствуйте, уважаемый форумчане!
Собственно вопрос: как сделать, чтоб шапка флеш грузилась только раз? Куда и что писать? А то она с музыкой, анимацией и на каждой странице такое терпеть невозможно :)
Читал, что нужно указать в if проигрывание последней сцены/кадра, но точно нигде не нашел ответа.
Браузер закэширует, не беспокойтесь.
Или стройте сайт на фреймах, с шапкой в неперегружающемся фрейме.
mooncar,
Автор имел ввиду воспроизведение только раз.
А, понятно. Я-то буквально читаю. "Чтоб шапка флеш грузилась только раз". Типа, ТС не хочет безобразия с долгой загрузкой.
Вариант с использованием SharedObject:
var so:SharedObject = SharedObject.getLocal("flash_kookie");
if(so.data.alreadyPlayed == undefined){
so.data.alreadyPlayed = true;
gotoAndPlay(1);
}else{
gotoAndStop(40);
}
so.flush();
Вставлять в первый кадр основного таймлайна. Вместо числа 40, нужно указать номер кадра, который должен отображаться у вас при "повторной загрузке".
MrArthur
28.09.2012, 20:36
Tails, делать ключевой кадр в начале и туда писать?
А где глянуть сколько всего кадров есть?
делать ключевой кадр в начале и туда писать?
Да.
А где глянуть сколько всего кадров есть?
http://www.flasher.ru/forum/attachment.php?attachmentid=28517&d=1348837902
-> 65
MrArthur
28.09.2012, 20:48
какой слой неважно или в каждый писать надо? :eek:
Я нуб :umnik2:
В каждый слой не надо. Достаточно один раз. play() stop() работает для всех слоев текущего тайм-лайна
MrArthur
29.09.2012, 12:40
Вставляю в первый ключевой кадр основного таймлайна
var so:SharedObject = SharedObject.getLocal("flash_kookie");
if(so.data.alreadyPlayed == undefined){
so.data.alreadyPlayed = true;
gotoAndPlay(1);
}else{
gotoAndStop(65);
}
so.flush();
На последний кадр gotoAndStop(65). Кнопки стают некликабельными (нет анимации при наводке курсора), если в другой слой вставляю, в некоторых работает только кнопка "Home"(открывает страницу) , при чём анимация есть у всех, но нажатия безрезультатны. Может есть разница в какой слой вставлять или ошибка где-то? Без этого кода кнопки кликабельны, но флеш каждый раз проигрывается по новой.
Мда я так надеялся, что этого не произойдет ...
Твои действия:
Полностью удаляешь слой 106
Слой 107 1 кадр, на нём находиться муви клип с полоской загрузки. Выделяеш его мышкой, заходиш во вкладку Actions, там будет:
onClipEvent (load) {
total = _root.getBytesTotal();
}
onClipEvent (enterFrame) {
loaded = _root.getBytesLoaded();
percent = int(loaded/total*100);
text = " "+percent+"%";
gotoAndStop(percent);
if (loaded == total) {
_root.play();
}
}
удаляешь всё, чтоб чисто было
Затем этому муви клипу на слое 107 в первом кадре, в поле instance name даёш имя: loader
Слой под названием Family portal кадр 35, даёш имя невидимому муви клипу: headClip
Слой 100 кадр 65, заходиш в Actions, там будет:
stop();
_root.menu["bt"+_root.button].gotoAndPlay("s1");
_root.menu["bta"+_root.button].gotoAndPlay("s1");
_root.link = _root.button;
и ещё код с сылками для кнопок, который я давал тебе до этого. Удаляешь всё и вставляешь:
stop();
_root.menu["bt"+_root.button].gotoAndPlay("s1");
_root.menu["bta"+_root.button].gotoAndPlay("s1");
_root.link = _root.button;
if(fastPlay){
menu.gotoAndStop(menu._totalframes);
headClip.gotoAndStop(headClip._totalframes);
}
menu.bt1.onPress = function(){
getURL('https://www.google.ru/');
}
menu.bt2.onPress = function(){
getURL('https://www.google.ru/');
}
menu.bt3.onPress = function(){
getURL('https://www.google.ru/');
}
menu.bt4.onPress = function(){
getURL('https://www.google.ru/');
}
menu.bt5.onPress = function(){
getURL('https://www.google.ru/');
}
menu.bt6.onPress = function(){
getURL('https://www.google.ru/');
}
menu.bt7.onPress = function(){
getURL('https://www.google.ru/');
}
По сути добавляется только условие.
И последнее, вставляеш в первый кадр новый код:
stop();
var so:SharedObject = SharedObject.getLocal("flash_kookie");
var total:Number = _root.getBytesTotal();
var loaded:Number = 0;
var percent:Number = 0;
var fastPlay:Boolean = true;
onEnterFrame = function(){
loaded = _root.getBytesLoaded();
percent = int(loaded/total*100);
loader.gotoAndStop(percent);
if (loaded == total){
if(so.data.alreadyPlayed == undefined){
so.data.alreadyPlayed = true;
so.flush();
fastPlay = false;
gotoAndPlay(2);
}else gotoAndStop(65);
delete onEnterFrame;
}
}
Если что-то не работает, внимательно ещё раз проходишь по каждому пункту.
MrArthur
29.09.2012, 14:07
Tails, спасибо большое! Всё работает приемлемо) Из интереса, какой у Вас стаж работы в этой области?)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.