Bonjour,

Je charge un fichier texte plus de 20Mo peut aller jusqu’à des centaines de milliers de ligne
J’ai une méthode traitement() qui prend plus de 20sec
Au fait, elle traite chaque ligne d’un tableau il y a des calcules, des répartitions dans d’autres tableaux puis affichage des données dan un dataGrid.
Je souhaite mettre un preloader (MovieClip) au début jusqu'à la fin du traitement de cette fonction

Jai fait un truc comme ça mais il ne fonctionne pas très bien:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
preloader.gotoAndPlay(1);
function traitement() {
 
	preloader.visible=true;
 
	var i:int;
	for (i = 0; i < Tableau.length; i++) {
 
		traitement ….
}
 
preloader.visible=false;
 
}
Est-il possible d’attacher un Evenement exemple OnComplete ou OnProgress à cette fonction ??

codialement

voila le code de mon apli. sans le détail du traitement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
 
 
import flash.net.FileReference;
//
var data:ByteArray;
var fileReference:FileReference;
var mFileReference:FileReference;
//
var Tableau:Array = new Array();
//
var ATableau:Array = new Array();
var BTableau:Array = new Array();
var CTableau:Array = new Array();
var HTableau:Array = new Array();
var MTableau:Array = new Array();
var PTableau:Array = new Array();
//
var VTableau:Array = new Array();
//
preloader.gotoAndPlay(1);
preloader.visible=false;
 
ouvreFichierBtn.addEventListener(MouseEvent.CLICK, ouvreExplorer);
 
// Cette fonction est appelée quand j'appuis sur le bouton
function ouvreExplorer(event:MouseEvent):void {
	trace("ouvreExplorer");
	mFileReference=new FileReference();
	mFileReference.addEventListener(Event.SELECT, selectFichier);
	var swfTypeFilter:FileFilter=new FileFilter("Text Files","*.txt");
	var allTypeFilter:FileFilter=new FileFilter("All Files (*.*)","*.*");
	mFileReference.browse([swfTypeFilter, allTypeFilter]);
}
// Cette fonction est appelée quand l'utilisateur selectionne un ficher dans la fenetre explorer
function selectFichier(event:Event):void {
	trace("le fichier est selectionné");
	// Event dans le cas ou le chargement est bien passer
	mFileReference.addEventListener(Event.COMPLETE, FinChargement);
	// Event dans le cas ou il y a erreur de chargement
	mFileReference.addEventListener(IOErrorEvent.IO_ERROR, ErreurChargement);
	// Event de chargement pour le progresse Bare
	mFileReference.addEventListener(ProgressEvent.PROGRESS, onProgress);
	// demande a FileRefence de charger le fichier
	mFileReference.load();
	// Affiche progress bar
	preloader.visible=true;
	ouvreFichierBtn.visible=false;
}
// Cette fonction affiche la progression du vhargement du fichier dans progress
function onProgress(event:ProgressEvent):void {
	if (event.bytesTotal==event.bytesLoaded) {
 
		trace("charger");
		preloader.visible=false;
	} else {
		//je ne fait rien;
	}
}
// Cette fonction est appelée après que le fichier est loadé
function FinChargement(event:Event):void {
	fileReference=event.target as FileReference;
	trace(" fichier :   "+(event.target.name));
	// Cette partie hape les données dans data puis chaque ligne dans le tableau      
	// Initialiser(vider) le tableau  utiliser array.length = 0 est plus rapide est perfermant que array.splice(0,array.length);                                                              
	//Tableau.splice(0,Tableau.length);
	Tableau.length=0;
	data=fileReference["data"];
	Tableau=(fileReference["data"].toString()).split("\n");
	trace("Nombre de ligne :  "+(Tableau.length));
	//trace(Tableau[1]);
	traitement();
 
	trace("le fichier est completement charger");
}
//
function ErreurChargement(event:Event):void {
	// Cache progress bar
	preloader.visible=false;
	ouvreFichierBtn.visible=true;
 
	trace("erreur");
}
//
function traitement() {
	var i:int;
	for (i = 0; i < Tableau.length; i++) {
 
		//ici mon traitement ....
	}
}