com.neolao.controls.LoadMultiple

Chargement successif de plusieurs LoadManager.

Classes recquises:

Propriétés

Visibilité Type Nom Status Description
public Array loaders Liste des LoadManager à lancer successivement
public Array urls Liste des urls
public Number timer Le temps mort entre chaque chargement

Méthodes

Visibilité Return Nom Param 1 Description
public Void load pUrl:String Lance le chargement

Evénements

Nom Param 1 Param 2 Param 3 Param 4 Description
onLoad Evénement invoqué lorsqu'un chargement est terminé.
onLoading pBytesLoaded:Number pBytesTotal:Number pIndex:Number pTotal:Number Evénement invoqué pendant un chargement.
onFileNotFound pUrl:String Evénement invoqué lorsque le fichier à charger n'a pas été trouvé.
onTimeOut pUrl:String Evénement invoqué lorsqu'un chargement fait un timeout.
onNoTarget Evénement invoqué lorsque la cible du chargement disparait.

Change log

[04/10/2004] Version 1.0

Création

[06/10/2004] Version 1.1

Ajout de l'événement onNotarget

[21/09/2005] Version 1.2

On envoi l'url di fichier en cours de chargement en paramètre en plus à onLoading

[04/10/2005] Version 1.3

Modification de la méthode nextLoad, j'utilise Delegate maintenant

Source

import com.neolao.LogManager;
import com.neolao.controls.Delegate;
/**
 * Chargement successif de plusieurs LoadManager
 * @author 		neolao <neo@neolao.com>
 * @version 		1.3 (04/10/2005)
 * @link		http://resources.neolao.com/flash/classes/controls/LoadMultiple
 * @license		http://creativecommons.org/licenses/by-sa/2.0/	
 */
dynamic class com.neolao.controls.LoadMultiple {
	public var className:String = "LoadMultiple";
	public var version:String = "1.3";
 
	// ----------------------------- CONSTANTES --------------------------------
	/**
	 * Le timer par défault
	 */
	private var DEFAULT_TIMER:Number = 50;
 
	// ----------------------------- VARIABLES ---------------------------------
	/**
	 * Liste des LoadManager à lancer successivement
	 */
	private var _loaders:Array;
	/**
	 * Liste des urls à charger
	 */
	private var _urls:Array;
	/**
	 * L'index du load courant
	 */
	private var _currentLoad:Number;
	/**
	 * Timer entre chaque load
	 */
	private var _timer:Number;
	/**
	 * logs
	 */
	private var _log:LogManager;
	// ----------------------------- EVENEMENTS --------------------------------
	/**
	 * Evénement invoqué lorsque les chargements sont terminés
	 */
	public var onLoad:Function;
	/**
	 * Evénement invoqué pendant le chargement global
	 * @param pBytesLoaded Le nombre de bytes chargés
	 * @param pBytesTotal Le nombre de bytes total
	 * @param pIndex L'index courant
	 * @param pTotal Le nombre total de loader
	 */
	public var onLoading:Function;
	/**
	 * Evénement invoqué lorsqu'un fichier à charger n'a pas été trouvé
	 * @param pUrl L'url du fichier
	 */
	public var onFileNotFound:Function;
	/**
	 * Evénement invoqué lorsqu'un chargement fait un timeout
	 * @param pUrl L'url du fichier
	 */
	public var onTimeOut:Function;
	/**
	 * Evénement invoqué lorsque la cible disparait
	 * @param pUrl L'url du fichier
	 */
	public var onNoTarget:Function;
 
	/*============================= CONSTRUCTEUR =============================*/
	/*========================================================================*/
	/**
	 * Constructeur
	 */
	public function LoadMultiple(){
		_log = new LogManager(className);
		_timer = DEFAULT_TIMER;
	}
	/*======================= FIN = CONSTRUCTEUR = FIN =======================*/
	/*========================================================================*/
 
	/*=========================== METHODES PRIVEES ===========================*/
	/*========================================================================*/
	/**
	 * Lance le prochain chargement
	 */
	private function nextLoad(){
		_currentLoad++;
		if(_currentLoad <= _loaders.length){
			_loaders[_currentLoad - 1].onLoad = Delegate.create(this, function(){
				setTimeout(this, "nextLoad", _timer);
			});
			_loaders[_currentLoad - 1].onLoading = Delegate.create(this, function(pBytesLoaded:Number, pBytesTotal:Number){
				_onLoading(pBytesLoaded, pBytesTotal);
			});
			_loaders[_currentLoad - 1].onFileNotFound = Delegate.create(this, function(pUrl:String){
				onFileNotFound(pUrl);
			});
			_loaders[_currentLoad - 1].onTimeOut = Delegate.create(this, function(pUrl:String){
				onTimeOut(pUrl);
			});
			_loaders[_currentLoad - 1].onNoTarget = Delegate.create(this, function(pUrl:String){
				onNoTarget(pUrl);
			});
 
			_log.action = "Début du chargement " + _currentLoad + ".";
			_loaders[_currentLoad - 1].load(_urls[_currentLoad - 1]);
		}else{
			// Tous les chargements sont terminés
			_log.action = "Les " + loaders.length + " sont terminés.";
			onLoad();
		}
	}
	/**
	 * Méthode invoquée lors des chargements
	 * @param pBytesLoaded bytes chargés
	 * @param pBytesTotal bytes total
	 */
	private function _onLoading(pBytesLoaded:Number, pBytesTotal:Number){
 
		onLoading(pBytesLoaded, pBytesTotal, _currentLoad, _loaders.length, _urls[_currentLoad - 1]);
	}
	/*===================== FIN = METHODES PRIVEES = FIN =====================*/
	/*========================================================================*/
 
	/*============================ GETTER  SETTER ============================*/
	/*========================================================================*/
	/**
	 * Liste des LoadManager à lancer successivement
	 */
	public function set loaders(pList:Array){
		_loaders = pList;
	}
	public function get loaders():Array{
		return _loaders;
	}
	/**
	 * Liste des urls
	 */
	public function set urls(pList:Array){
		_urls = pList;
	}
	public function get urls():Array{
		return _urls;
	}
	/**
	 * Le temps mort entre chaque chargement
	 */
	public function set timer(pTimer:Number){
		if(pTimer != undefined && pTimer > 0){
			_timer = pTimer;
		}
	}
	public function get timer():Number{
		return _timer;
	}
	/*====================== FIN = GETTER  SETTER = FIN ======================*/
	/*========================================================================*/
 
	/*========================== METHODES PUBLIQUES ==========================*/
	/*========================================================================*/
	/**
	 * Lance le chargement
	 */
	public function load(){
		if(_loaders != undefined && _urls != undefined){
			_log.action = "Lancement des " + loaders.length + " chargements.";
			_currentLoad = 0;
			nextLoad();
		}else{
			_log.error = "Il manque des paramètres";
		}
	}
	/*==================== FIN = METHODES PUBLIQUES = FIN ====================*/
	/*========================================================================*/
}