Форум 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)
-   -   прелоад себя и не только (http://www.flasher.ru/forum/showthread.php?t=109739)

TanaTiX 19.03.2008 23:37

прелоад себя и не только
 
Есть прелоадер, который загружает всю графику на сайт и все работает. Но поставлена задача: грузить в прелоадер, не только графику, но самого себя, т.е. рабочую флешку. Было добавлено 2 строки кода (обозначено красным), в результате чего все грузится как и раньше, но помимо этого еще по одной копии каждой картинки грузится в начало координат и никак не реагирует на навигацию. Версия плеера - 9. Баг проявляется на мозиле и на эксплорере, в новом эксплорере и в опере не юзал, та же проблема собственно в плеере и в самом флеше. Вот код:
Код:

stop();
import mx.transitions.Tween;
import mx.transitions.easing.*;
Stage.scaleMode="noScale";
//создание загрузчика и слушателя
var my_mcl:MovieClipLoader = new MovieClipLoader();
var my_lst:Object = new Object();
my_mcl.addListener(my_lst);
_root.preloader._visible = false;
//mass - создание массива для хранения загружаемых файлов
var mass = new Array();
//okload - контейнер, в который загружаются все файлы
var okload = false;

//пока выполняется загрузка считаем проценты
my_lst.onLoadProgress = function(target_mc:MovieClip, loaded:Number, total:Number) {
        l = Math.round(loaded/total*100);
        mass[target_mc] = [loaded, total];
};

//определение количества загруженой информации
this.onEnterFrame = function() {
        if (!okload) {
                return true;
        }
        //tbl и tbt - определяют общее количество загружаемой информации(total) и количество загруженой информации(loaded)
        tbl = 0;
        tbt = 0;
        for (cl in mass) {
                tbl += mass[cl][0];
                tbt += mass[cl][1];
        }
        //добавляем размер самой флэхи
        tbl += _root.getBytesLoaded();
        tbt += _root.getBytesTotal();

        //определение объема флэшки
        //perc- проценты
        perc = Math.round(tbl/tbt*100);
        preloader.gotoAndStop(perc);

        _root.preloader.preload_txt.text = perc+"%";

        if (perc == 100) {
                //код, выполняемый при окончании загрузки контента
                _root.preloader._visible = false;
                okload = false;
                for (i=0; i<massimages.length; i++) {
                        _root["cont_mc"+i]._visible = false;
                }
                gotoAndStop(2);
        }
};

//код, выполняемый при старте загрузки
my_lst.onLoadStart = function(target_mc:MovieClip) {
        _root.preloader._visible = true;
};

//код, выполняемый при инициализации
my_lst.onLoadInit = function(target_mc:MovieClip) {
        target_mc._height = 0;
        target_mc._width = 0;
};

//создание массива из загружаемых изображений и их обработка
var massimages = new Array('img/main.jpg', 'img/izd1.jpg');

okload = true;
for (i=0; i<massimages.length; i++) {
        clip = _root.createEmptyMovieClip("cont_mc"+i, i);
        _root["cont_mc"+i]._visible = false;
        _root.my_mcl.loadClip(massimages[i],clip);
}


Molecula 20.03.2008 02:34

Цитата:

Есть прелоадер, который загружает всю графику на сайт и все работает. Но поставлена задача: грузить в прелоадер, не только графику, но самого себя, т.е. рабочую флешку.
Странная задача. Зачем грузить самого себя?
Логика странная.
Обычно:
1) один СВФ, который весит до 2-3 кБ (прелоадер), подгружает другой СВФ, или
2) В самом СВФ делается два кадра - первый для отображения самозагруженности, а во втором, основной управляющий код.

У Вас как организовано?

Цитата:

Баг проявляется на мозиле и на эксплорере, в новом эксплорере и в опере не юзал, та же проблема собственно в плеере и в самом флеше.
А где она НЕ проявляется?

Код:

//okload - контейнер, в который загружаются все файлы
var okload = false;

Очень интересно.

TanaTiX 20.03.2008 12:51

Как оказалось проблема была не в тех 2х строчках. Просто все нормально отображалось в самом флеше, а тесты непосредственно в сети были отложены. Вот теперь и повылезали странные баги... :(
Molecula, вот я как раз про 2й вариант, у меня прелоадер в 1м кадре.
Просил глянуть знакомого - у него все работает нормально (эксплорер+виста), но меня это как-то не особо радует
Тот код убрал, но это проблему не решает.

ЗЫ. Кстати, как лучше создавать прелоадер, в отдельном файле или отдельном кадре? (имеется в виду для больших проектов)

iNils 20.03.2008 13:28

Я практикую в отдельном файле. Причины две:
1. Писать код прилоадера во фрейме мне не удобно, хочу класс. А все классы грузяться одновременно.
2. Используя в прелоадере такой же шрифт как и в основном проекте, приходится импортировать весь шрифт в кадр прелоадера. Так как нельзя грузить часть символов шрифта в одном кадре, а часть в другом.

В итоге, обе причины приводят к увеличению размера кадра с прелоадером, и в результате загрузка начинается не с 0%, а с гораздо больших значений.

TanaTiX 20.03.2008 14:01

iNils, учту на будущее.
Может кого наведет на умные мысли... Вот ссылка на мою рабочую версию.
http://rrs.ho.com.ua/ (не сочтите за рекламу, там рекламировать нечего)


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

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