Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Отследить загрузку картинки в movie clip (http://www.flasher.ru/forum/showthread.php?t=128179)

Ilut 01.08.2009 06:28

Отследить загрузку картинки в movie clip
 
Доброе время суток. Вобщем вся суть проблемы отражена в названии вопроса. Необходимо определить момент, когда картинка загрузилась в movieclip. Есть пример на AS2.
Код:

clip.loadImage = function(file)
{
    this.image.removeMovieClip();
    this.createEmptyMovieClip("image", 0);
    this.image.loadMovie(file);
    this.onEnterFrame = function()
    {
        var l = this.image.getBytesLoaded();
        var t = this.image.getBytesTotal();
        if (t>0 && l>=t) {
            // загрузка закончилась
            delete this.onEnterFrame;
        }
    };
};

Самостоятельно его не получилось переделать, флеш ругается на getBytesLoaded/Total. Подскажите пожалуйста решение проблемы. Заранее благодарю за помощь!

etc 01.08.2009 10:51

Loader в помощь.

Аллиас 01.08.2009 13:21

Для меня первое знакомство с Loader'ом по справочнику оказалось не очень понятным, поэтому приведру пример загрузки картинки с помощью Loader'а (Код рассчитан на FLA файл).
Код AS3:

//создаем переменную со ссылку на то, что загружаем.
var url:URLRequest = new URLRequest("http://s49.***********/i124/0904/08/c4970982e94e.gif");
//создаем сам загрузчик
var ldr:Loader = new Loader();
//загружаем url
ldr.load(url);
//чтобы узнать когда загрузка содржимого началась, идет, и закончилась
//нужно слушать соответствующее события (Event.OPEN, ProgressEvent.PROGRESS
// и Event.COMPLETE соответственно), для этого добавим необходимые слушатели
//свойству contentLoaderInfo, нашего загрузчика (внимания сам Loader НЕ отправляет этих событий)
//отравится один раз при начале загрузки...
ldr.contentLoaderInfo.addEventListener(Event.OPEN, onStart);
//будет отправляться постоянно, пока загрузка не завершилась
//вот тут можно считать contentLoaderInfo.bytesTotal и
//contentLoaderInfo.bytesLoaded;
ldr.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);
//отправится один раз, когда загрузка будет завершена.
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
//создаем обработчики для всех событий...
function onStart(e:Event){
  trace("загрузка началась");
}
function onProgress(e:Event){
  trace("загружено "+Math.floor(ldr.contentLoaderInfo.bytesLoaded/1024) +" из "+Math.floor(ldr.contentLoaderInfo.bytesTotal/1024)+" КБ");
}
function onComplete(e:Event){
  trace("загрузка закончилась");
  addChild(ldr); //отображение картинки когда загрузка заверншилась
}


Ilut 02.08.2009 06:13

Большое спасибо за ответы, но вновь возникла трудность. Подскажите, а как можно проверить существование загружаемого файла? Я пробовал использовать блоки try catch, пробовал слушать события об ошибке, но у меня так и не получилось достичь желаемого результата! вот пример кода, который у меня в данный момент:
Код AS3:

loader.addEventListener(IOErrorEvent.IO_ERROR, onErr);        
var ureq:URLRequest=new URLRequest("file_path");       
loader.load (ureq);       
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);

Заранее благодарю за помощь!

udaaff 02.08.2009 11:30

Код AS3:

loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onErr);


Ilut 02.08.2009 12:46

Я такой вариант тоже рассматривал, но он не рабочий.

etc 02.08.2009 13:14

Не может быть.

cleptoman 02.08.2009 13:18

Ilut, все работает, если делать как надо и вешать слушателей ДО вызова загрузки

Ilut 03.08.2009 03:53

Спасибо за помощь, разобрался в чем была проблема и почему слушатель не запускался.


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

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