PDA

Просмотр полной версии : Загрузка Flash только на главной (или при первом посещении)


MrArthur
28.09.2012, 19:39
Здравствуйте, уважаемый форумчане!
Собственно вопрос: как сделать, чтоб шапка флеш грузилась только раз? Куда и что писать? А то она с музыкой, анимацией и на каждой странице такое терпеть невозможно :)

Читал, что нужно указать в if проигрывание последней сцены/кадра, но точно нигде не нашел ответа.

mooncar
28.09.2012, 19:50
Браузер закэширует, не беспокойтесь.
Или стройте сайт на фреймах, с шапкой в неперегружающемся фрейме.

Tails
28.09.2012, 19:54
mooncar,
Автор имел ввиду воспроизведение только раз.

mooncar
28.09.2012, 19:58
А, понятно. Я-то буквально читаю. "Чтоб шапка флеш грузилась только раз". Типа, ТС не хочет безобразия с долгой загрузкой.

Tails
28.09.2012, 20:21
Вариант с использованием 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, делать ключевой кадр в начале и туда писать?

А где глянуть сколько всего кадров есть?

Tails
28.09.2012, 20:42
делать ключевой кадр в начале и туда писать?

Да.

А где глянуть сколько всего кадров есть?
http://www.flasher.ru/forum/attachment.php?attachmentid=28517&d=1348837902
-> 65

MrArthur
28.09.2012, 20:48
какой слой неважно или в каждый писать надо? :eek:
Я нуб :umnik2:

dark256
29.09.2012, 11:05
В каждый слой не надо. Достаточно один раз. 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"(открывает страницу) , при чём анимация есть у всех, но нажатия безрезультатны. Может есть разница в какой слой вставлять или ошибка где-то? Без этого кода кнопки кликабельны, но флеш каждый раз проигрывается по новой.

Tails
29.09.2012, 13:44
Мда я так надеялся, что этого не произойдет ...

Твои действия:

Полностью удаляешь слой 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, спасибо большое! Всё работает приемлемо) Из интереса, какой у Вас стаж работы в этой области?)

Tails
29.09.2012, 14:41
Года 2 может наберется.