2009-10-31 2 views
1

Как загрузить изображения в as3:способов загрузки изображений в AS3

  1. загрузить их все сразу, например, как это (псевдо as3 код):

    for each (var url:String in images){ 
        loader.load(url); 
    } 
    
  2. Или загрузить их один на один (опять же, псевдо-код):

    loader.load(images.shift()) 
    
    onComplete(){ 
        loadNext(images.shift()); 
    } 
    

Какие путь быстрее и лучше для производительности?

ответ

3

Второй способ кажется намного лучше. Если в первый раз будут загружены сотни изображений, все запросы на изображение будут запущены почти одновременно, что сделает браузер почти непригодным для использования, а загрузка первого изображения может занять несколько больше времени из-за параллельных запросов (тогда пропускная способность будет разделяться) чем второй подход. Но общее время загрузки (то есть количество изображений * avg время для загрузки одного изображения) будет в первую очередь меньше.

Лучше всего использовать гибрид этих подходов. Загрузите MAX_NUMBER в любое время, что означает начало загрузки изображений до MAX_NUMBER операций загрузки изображений. И как только начнется загрузка, начнется загрузка нового. Ниже приводится приблизительный подход. loadimages необходимо вызывать через фиксированный интервал времени, равный 100 мс. И MAX_NUMBER может быть 20 или около того.

function loadimages(){ 
    while(count < MAX_NUMBER) { 
     loader.load(images.shift); 
     count++; 
    } 
} 
onComplete() {count--;} 
onFail(){count--;} 
setIntarval(loadimages, 100); 

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

3

Этот вопрос не имеет простого ответа.

Когда Flash загружает файл (в браузере), это зависит от того, как браузер управляет транзакцией http, кешированием и т. Д. Если у вас есть только несколько изображений, и они не слишком большие, то первый способ проще программы, и вы можете зависеть от очереди загрузки http браузеров для управления файлами.

Если у вас есть много файлов (десятки и десятки) из них, то пошагово это может быть лучше несколькими способами. Прежде всего, создание каждого объекта довольно дорого, в случае загрузчика вы можете добавить к нему прослушиватели событий и, возможно, даже отобразить анимацию загрузки. Это довольно дорого и замедлит Flash, уменьшая отзывчивость вашего приложения. Во-вторых, ошеломляя их, вы четко контролируете, что загружается, а не в зависимости от реализации браузера http. Например, вы можете гарантировать, что сначала будут загружены элементы, которые будут сначала загружены пользователем.

В случае гораздо больших файлов (скажем, сотен килобайт) вы можете загружать один за другим, что приводит к тому, что голодающие пользователи не голодают. Это позволяет получить некоторую форму результата быстрее, чем, возможно, ждать одновременного скачивания четырех (обычного параллельного предела) сто килобайтных файлов.

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

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

Смежные вопросы