Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Загрузка Flash только на главной (или при первом посещении) (http://www.flasher.ru/forum/showthread.php?t=184870)

MrArthur 28.09.2012 19:39

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

Читал, что нужно указать в 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:
Код AS1/AS2:

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

Цитата:

Сообщение от MrArthur (Сообщение 1097848)
делать ключевой кадр в начале и туда писать?

Да.

Цитата:

Сообщение от MrArthur (Сообщение 1097848)
А где глянуть сколько всего кадров есть?

http://www.flasher.ru/forum/attachme...7&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

Вставляю в первый ключевой кадр основного таймлайна

Код AS1/AS2:

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

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

Твои действия:
  1. Полностью удаляешь слой 106
  2. Слой 107 1 кадр, на нём находиться муви клип с полоской загрузки. Выделяеш его мышкой, заходиш во вкладку Actions, там будет:
    Код AS1/AS2:

    onClipEvent (load) {
            total = _root.getBytesTotal();
    }
    onClipEvent (enterFrame) {
            loaded = _root.getBytesLoaded();
            percent = int(loaded/total*100);
            text = "  "+percent+"%";
            gotoAndStop(percent);
            if (loaded == total) {
                    _root.play();
            }
    }

    удаляешь всё, чтоб чисто было
  3. Затем этому муви клипу на слое 107 в первом кадре, в поле instance name даёш имя: loader
  4. Слой под названием Family portal кадр 35, даёш имя невидимому муви клипу: headClip
  5. Слой 100 кадр 65, заходиш в Actions, там будет:
    Код AS1/AS2:

    stop();
    _root.menu["bt"+_root.button].gotoAndPlay("s1");
    _root.menu["bta"+_root.button].gotoAndPlay("s1");
    _root.link = _root.button;

    и ещё код с сылками для кнопок, который я давал тебе до этого. Удаляешь всё и вставляешь:

    Код AS1/AS2:

    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/');
    }

    По сути добавляется только условие.
  6. И последнее, вставляеш в первый кадр новый код:
    Код AS1/AS2:

    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 может наберется.


Часовой пояс GMT +4, время: 23:18.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.