Я создал механизм для чтения списка URL-адресов из файла XML и загрузки их в фоновом режиме или по запросу (в зависимости от того, что наступит раньше). Предварительная загрузка просто загружает изображение и НИЧЕГО НЕ ДЕЛАЕТ С ЭТОМ; это зависит от кэша браузера, чтобы удерживать это изображение до тех пор, пока пользовательский интерфейс не выполнит «загрузку» и мгновенно вернет его.
GalleryImageItem.status больше для отладки, чем для чего-либо еще. Пользовательский интерфейс ничего не знает о предварительном загрузчике (и не должен согласовываться с ним).
Приветствия
<code>
private var BackgroundLoaderIndex : int = -1;
private var BackgroundImageLoader : Loader = null;
private var GalleryCanvasIndex : int = -1;
private var BackgroundGalleryLoadTimer : Timer;
[ArrayElementType("GalleryImageItem")]
private var GalleryImageArray : Array = new Array();
private function Initialize(event : Event) : void
{
LoadGalleryImageArray();
BackgroundGalleryLoadTimer = new Timer(4000);
BackgroundGalleryLoadTimer.addEventListener(TimerEvent.TIMER, BackgroundGalleryLoad);
BackgroundGalleryLoadTimer.start();
}
private function LoadGalleryImageArray() : void
{
var Galleries : XMLList = PageTextsXML.elements("Gallery").elements("GalleryImage");
for (var counter : int = 0; counter
package com.santacruzsoftware.lib
{
public class GalleryImageItem extends Object
{
public static const UNLOADED : int = 1;
public static const PRELOADING : int = 2;
public static const PRELOADED : int = 3;
public static const PRELOAD_FAILED : int = 4;
public static const LOADING : int = 5;
public static const LOADED : int = 6;
public static const LOAD_FAILED : int = 7;
private var _resourceName : String;
private var _detailResourceName : String;
private var _caption : String;
private var _status : int;
public function GalleryImageItem(aResourceName : String = "", aCaption : String = "", aDetail : String = "")
{
super();
_resourceName = aResourceName;
_caption = aCaption;
_detailResourceName = aDetail;
_status = UNLOADED;
}
public function get detailResourceName() : String{ return _detailResourceName }
public function set detailResourceName(value : String) : void { _detailResourceName = value }
public function get resourceName() : String{ return _resourceName }
public function set resourceName(value : String) : void { _resourceName = value }
public function get caption() : String{ return _caption }
public function set caption(value : String) : void { _caption = value }
public function get status() : int { return _status }
public function set status(value : int) : void { _status = value }
}
}
</code>