Загрузка миниатюр проблем - PullRequest
       15

Загрузка миниатюр проблем

1 голос
/ 18 августа 2010

У меня проблема при загрузке миниатюры, я установил интервал времени для каждого большого пальца, чтобы загрузить на сцене. Некоторые из них не могут загружаться последовательно по порядку, они отсутствуют, отстают ...

На самом деле я установил предварительный загрузчик на размер файла, но поскольку я загружаю динамически из XML, размер файла меньше.

Кто-нибудь знает решение для решения этой проблемы? Это действительно меня беспокоит ...

Я загружаю файл XML, и у меня нет проблем с процессом синтаксического анализа.

Иногда все миниатюры могут быть загружены в рабочую область, если пропускная способность немного медленная, она отстает, значит, загружается первый большой палец, затем внезапно пропускает второй миниатюру, вместо этого загружается третий миниатюру и так далее ...

Иногда он может загрузить целые миниатюры ... это странно

Здесь я установил таймер для загрузки каждого эскиза

protected static const INTERVAL_TIME:uint       = 1000;
initLoadTime = new Timer(INTERVAL_TIME);
initLoadTime.addEventListener(TimerEvent.TIMER, handleLoadedEachThumbnail, false, 0, true);
initLoadTime.start();

protected function handleLoadedEachThumbnail(event:TimerEvent):void
{
var container:MovieClip = new MovieClip();

if (currentIndex < tabPhoto.length) {
 thumbnailPositionMC = positionEachThumbnail();
 container.addChild(thumbnailPositionMC);
 addChild(container);


 currentIndex++;
}

if (currentIndex == tabPhoto.length) {
 currentIndex = 0;
 initLoadTime.removeEventListener(TimerEvent.TIMER, handleLoadedEachThumbnail);
 initLoadTime.stop();
}

}

Ответы [ 2 ]

1 голос
/ 19 августа 2010

Я думаю, что было бы лучше создать цикл и использовать Event.COMPLETE загрузчика, чтобы знать, когда загружать следующий эскиз, а не использовать интервал. Таким образом вы избежите конфликтов.

var imageLoader:Loader;
var currentImageLoading:uint;
var thumbsToLoad:Array; //array of strings of paths to the thumbnail

function loadThumbs(thumbs:Array):void
{
    currentImageLoading = 0;
    thumbsToLoad = thumbs;
    loadNextThumb();

function loadNextThumb():void
{
    imageLoader = new Loader();
    var imageUrl:String = thumbsToLoad[currentThumbLoading];
    var imageRequest:URLRequest = new URLRequest( imageUrl );
    imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadThumbComplete);
    imageLoader.load( imageRequest );
}

function loadThumbComplete(e:Event):void
{
    // do stuff with loaded thumb here
    var thumb:Sprite = new Sprite();
    thumb.addChild(imageLoader.content);
    trace(thumb.width);
    currentThumbLoading++;
    if (currentThumbLoading < thumbsToLoad.length) {
        loadNextThumb();
    } else {
        // loading cycle is complete
    }
}

Отредактировано после комментариев

Я исправил loadThumbComplete, чтобы получить параметр события. Чтобы получить ширину загруженного большого пальца, я предпочитаю брать содержимое из imageLoader и помещать его в Sprite.

0 голосов
/ 20 августа 2010

Я объявил tabPhoto и tabThumbWidthIncrement как Vector

var tabPhoto:Vector.<ThumbInfo> = new Vector.<ThumbInfo>;
var tabThumbWidthIncrement:Vector<uint> = new Vector.<uint>;
...