Concept des fenêtres de chargement

Fermé
abd_a Messages postés 23 Date d'inscription jeudi 7 août 2008 Statut Membre Dernière intervention 6 avril 2009 - 13 août 2008 à 17:07
abd_a Messages postés 23 Date d'inscription jeudi 7 août 2008 Statut Membre Dernière intervention 6 avril 2009 - 14 août 2008 à 13:53
Bonjour, je programme actuellement en Wlangage(windev) mais j'ai un problème qui ne le concerne pas particulièrement, en fait j'aimerais créer des fenêtres de chargement comme par exemple au lancement de mon application au moment du chargement des fichiers ou même dans l'application pendant l'execution d'une tache tel qu'une sauvegarde, une lecture ou une suppression dans la base de données, j'aimerais donc savoir comment le faire. je me dit que le principe doit être le même sur tous les langages donc quelque soit le langage que vous utilisez votre aide sera la bienvenue, merci

2 réponses

Bonjour,

je pourrait pas t'aider pour le langage de prog que tu utilises mais pour le concept comme tu le dit toi même ca doit fonctionner pareil.

Preloader(indiquant l'état du chargement d'un fichier):
On met dans une variable le poids(octets/bytes) du fichier à charger.
Puis on inséres une boucle qui va 'bloquer' la suite tant que les bytes chargés sont < au total , en calculant la différence des 2 on peut obtenir le rapport du chargement effectué / la taille totale(qu'on peut calculer en % par exemple pour afficher de façon claire).

if poids_chargé<poids_total = afficher (100*poids_total)/poids_chargé % else on déssafiche les infos de chargement et passe à l'étape suivante(si ce n'est déjà fait)

En programmation évenementielle il y a souvent des méthodes toutes faite pour ça.

Pour le cas ou il n'y a pas de poids de fichiers, une série de calculs dans une ou plusieurs fonctions par exemple on utilises le même principe en rajoutant une variable"point d'arrêt" à la fin des instructions à effectuer(ou quand il y a un résultat final).
Pendant l'éxécution des calculs il faut vérifier si la variable "point d'arrêt" est définit ou mise à la valeur précise.
Encore une fois en évenementiel il y a des solutions toutes faites plutôt que de faire une fonction de vérification qui va examiner la valeur de la variable point d'arrêt toutes les 10milisecondes ou autre astuce.

J'espére que c'est clair, le principe est là.
0
abd_a Messages postés 23 Date d'inscription jeudi 7 août 2008 Statut Membre Dernière intervention 6 avril 2009
13 août 2008 à 18:02
merci beaucoup pour ton aide je vais essayé d'appliquer cela mais si tu pouvais m'envoyer un bloc de code qui fait ce genre de chose ce serait un peu plus clair quelquesoit le langage je crois que je vais m'en sortir merci encore
-1
Yo je fait surtout de l'actionscript2(flash qui ressemble beaucoup au javascript) donc ca t'aidera problablement pas, surtout qu'on peut jouer avec les frames en flash.

Du code sans frame avec des gestionnaires d'événements:
// cette fonction est appelé lors d'n clic sur un bouton qui charge une image
function strip() {
	
	//loader
// création d'un nouveau clip vide

	var planche:MovieClip = this.createEmptyMovieClip("planche", totalbd+1);
// création d'un objet de gestionnaire de chargement
	var ml:MovieClipLoader = new MovieClipLoader();
// création d'un écouteur, aucune idée si on peut utiliser ce genre de choses avec windev, je pense mais bon
	var listener:Object = new Object();
	listener.onLoadProgress = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void {
		
		trace(target + ".onLoadProgress with " + bytesLoaded + " bytes of " + bytesTotal);
// avance = nombre de bytes chargé
		avance=bytesLoaded;
//total= nombre de bytes total de l'image
		total=bytesTotal;
// bon là j'utilise bien une frame mais c'est pour masquer/afficher la barre de chargement et rien d'autre
		timeload.chargeb.gotoAndPlay(2);
// calcul du ratio
		pourcent=Math.round(100*avance/total);
		trace("Chargement="+pourcent+"%");
// ici je modifie la largeur de la barre (exprimé en % de la taille totale)
		timeload.lodbar._xscale=pourcent;
		timeload.lodbar._alpha=70;
		
		}

// ecouteur se déclenche lorsque le chargement est complet

	listener.onLoadComplete = function(target:MovieClip):Void {
     trace(target + ".Chargement terminé");
// meme astice que pour afficher mais pour masquer la barre(la frame 1 est vide)
	 timeload.chargeb.gotoAndStop(1);
//on n'est jamais sur de rien je la rend transparente
	 timeload.lodbar._alpha=0;
		}
	ml.addListener(listener);
	
	ml.loadClip(urlimg, planche);

// suite de la fonction
}


Flash utilisant des élément graphiques je suit pas sur que ca puisse vraiment t'aider.
Je verrait bien :
un bouton déclenche le chargement, le calcul du poids de l'image puis un while qui regardes ou en est le chargement, on sort du while quand le chargement est complet.
0
abd_a Messages postés 23 Date d'inscription jeudi 7 août 2008 Statut Membre Dernière intervention 6 avril 2009
14 août 2008 à 13:53
slt et merci c'est très cool de ta part, j'ai quelques notions en actionscript et en javascript donc je pense ke je ne serais pas trop perdu, j'ai même pas encore eu le temps de tester tout ça et je crois ke ça va pa se faire de si tôt vu que je suis très pris par mon stage académique(réseau en plus) mais jvais essayer de trouver du temps pour ça puisque c'est l'une des choses qui me manque pour ke mes programmes soient parfaits, jte tiens au courant a+
-1