Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Можно ли узнать размеры загружаемого JPG до его полной загрузки? (http://www.flasher.ru/forum/showthread.php?t=147561)

nOobCrafter 08.12.2010 15:56

Вложений: 1
вот о чем говорил, можно загуглить и найти пост где идет пояснение.

dimarik 08.12.2010 17:33

Цитата:

Сообщение от Psycho Tiger (Сообщение 955803)
dimarik, Блуд мне в комментах к той статье как раз говорил обратное - тащим у Loader`а во время загрузки.

Специально проверил. Во время progress невозможно получить загруженные bytes. Может я не так ччто-то делаю?

Код AS3:

///////////////////////////////////////////////////////////////////////////////
//
//  Copyright (C) 2010. Dimarik
//
///////////////////////////////////////////////////////////////////////////////
 
package
{
 
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.IEventDispatcher;
import flash.events.ProgressEvent;
import flash.net.URLRequest;
 
/**
 *  @author                                Dimarik
 *  @version                        1.0
 *  @langversion                3.0
 *  @playerversion                9.0
 *
 */

[SWF(width="1024", height="768", frameRate="21", backgroundColor="#E0EEEE")]
 
public class LoaderTest extends Sprite {
 
        //-------------------------------------------------------------------------
        //
        //  Constructor
        //
        //-------------------------------------------------------------------------
 
        public function LoaderTest() {
                super();
                super.addEventListener(Event.ADDED_TO_STAGE, this.initialize);
        }
 
        //-------------------------------------------------------------------------
        //
        //  Private variables
        //
        //-------------------------------------------------------------------------
 
        //-------------------------------------------------------------------------
        //
        //  Private methods
        //
        //-------------------------------------------------------------------------
 
        public function initialize(event:Event):void {
                (event.target as IEventDispatcher).removeEventListener(event.type, arguments.callee);
 
                super.stage.scaleMode = StageScaleMode.NO_SCALE;
                super.stage.align = StageAlign.TOP_LEFT;
 
                var url:                String = 'http://www.pixeljoint.com/files/icons/full/tree2__r1368268481.gif';
                var request:        URLRequest = new URLRequest(url);
                var loader:                Loader = new Loader();
                loader.load(request);
 
                var li:                        LoaderInfo = loader.contentLoaderInfo;
                li.addEventListener(Event.COMPLETE,                        this.handler_complete);
                li.addEventListener(ProgressEvent.PROGRESS,        this.handler_progress);
        }
 
        //-------------------------------------------------------------------------
        //
        //  Events handlers
        //
        //-------------------------------------------------------------------------
 
        /**
        * @private
        */

        private function handler_complete(event:Event):void {
                var li:LoaderInfo = event.target as LoaderInfo;
                trace('handler_complete, length', li.bytes.length); // 584458
                super.addChild(li.loader.content);
        }
 
        /**
        * @private
        */

        private function handler_progress(event:ProgressEvent):void {
                var li:LoaderInfo = event.target as LoaderInfo;
                trace('handler_progress, length', li.bytes.length); // 0
        }
 
}
}


Psycho Tiger 08.12.2010 17:50

Из переписки меня и Блуда:
Цитата:

Блин.
Смотри: loaderInfo я могу выдернуть у content`а, который станет доступен только по окончанию загрузки, а я хочу начать парсинг после первых 50 загруженных байт (ну приблуда у меня такая, хочется показать совсем неопытному читателю, что нам совсем не нужно даже флешку загружать - хоть обрубай поток после этого). Читать данные пока загрузка не окончена позволяет только URLStream (ну, сокет не в счет), поэтому выбор и пал на него.
Цитата:

Psycho Tiger, приехали:
1. а как у Loader ты отслеживаешь прогресс загрузки?
2. и как использование Loader помешает тебе отрубать поток?
3. что кроме религии тебе мешает начать парсинг после первых 50 загруженных байт используя Loader?
4. неопытный читатель не поймёт почему ты используешь URLStream для загрузки swf.
5. кроме URLStream и сокета читать данные позволяет Loader.
Теперь нужно подумать.

Добавлено через 2 минуты
P.S. ты нарушаешь конвенцию? Забавно )
Код AS3:

private function handler_complete(event:Event):void {


dimarik 08.12.2010 18:55

Не нарушаем, а немного отходим от нее. Зато и глазу, и в поиске приятно. Сразу видны обработчики.

Psycho Tiger 08.12.2010 19:41

Аха, в этом есть смысл.
Ждём Блуда или кто-то готов дать комментарии?)

iNils 08.12.2010 19:51

Цитата:

Сообщение от dimarik (Сообщение 955863)
Не нарушаем, а немного отходим от нее. Зато и глазу, и в поиске приятно. Сразу видны обработчики.

Поэтому я оставил все как в as2, типа onСomplete, onProgress

dimarik 08.12.2010 21:44

iNils, on[event.type] вполне соответствует конвекции. Ха-ха. Только привыкли мы к "handler_". Очень он нам мил.

Wolsh 08.12.2010 22:14

Цитата:

Сразу видны обработчики
Хех... А два ярко-синих слова event:Event никак не говорят глазу, что здесь обработчик?)))) Не знаю, моему глазу гОры приятнее, чем я_мы.

iNils 08.12.2010 22:21

Цитата:

Сообщение от Wolsh (Сообщение 955904)
Хех... А два ярко-синих слова event:Event никак не говорят глазу, что здесь обработчик?)))) Не знаю, моему глазу гОры приятнее, чем я_мы.

Да вообще то там есть это)
Код AS3:

//-------------------------------------------------------------------------
//
//  Events handlers
//
//-------------------------------------------------------------------------


dimarik 08.12.2010 22:52

Цитата:

Сообщение от Wolsh (Сообщение 955904)
Хех... А два ярко-синих слова event:Event никак не говорят глазу, что здесь обработчик?)))) Не знаю, моему глазу гОры приятнее, чем я_мы.

Ctrl+o во FlexBuilder. Набираем "han", "hand" или "handle", в зависимости от скоропечатания, и видим список обработчиков. Это что касается поиска. А если Ваш взгляд нечаянно выхватит "я_мы" в таком виде, то значит, что вы просто опустились в конец листинга, где и располагаются обработчики событий.

Добавлено через 21 минуту
Кстати, пользуясь случаем хочу передать привет Андрею aka "andreus".
Мне сейчас перепала поддержка проекта, автором которого он являлся. Замечательный флешер из нашей команды, ныне покинувший timezero. Благодаря etc и BloodHound, ратовавших за введение корпоративных единых правил оформления проектов, я трачу на первую компиляцию и на понимание кода этого проекта очень мало времени. А время в наши дни - это деньги.


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

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