2010-11-19 6 views
0

Je crée une application Flex AIR qui importe les données d'un fichier zip dans un db sqlite. J'ai besoin de montrer une barre de progression/"Spinner Wait" Spinner animation afin que l'utilisateur attend jusqu'à ce que l'opération se termine.Comment créer un compteur "Please Wait" pendant l'importation des données

J'ai essayé de mettre une animation de spinner contextuel mais le problème est que le spinner cesse de tourner dès que les requêtes d'importation de base de données commencent à s'exécuter.

Je dois exécuter simultanément le code spinner et le code d'importation plutôt que séquentiellement.

Merci

Répondre

1

Le problème que vous rencontrez ici est dû au fait que Flex est une application à un seul thread. Lorsque vous exécutez de grandes quantités de traitement, le thread ne met pas à jour l'interface utilisateur, de sorte que votre spinner cesse de tourner.

Je pense que vous pouvez contourner ce problème en créant un Green Thread pour gérer votre code de traitement s'il peut être coupé. Vous pouvez vérifier here pour une implémentation as3 du fil vert.

Je peux fournir plus d'informations sur la mise en œuvre si vous en avez besoin.

+0

Découvrez la réponse acceptée à cette question: http://stackoverflow.com/questions/2731160/flex-as3-progressbar-doesnt-move – midhunhk

+0

très intéressant. c'est certainement une nouvelle façon de faire les choses pour moi. Votre aide est tres apprecie. – Vinayak

+0

vous êtes les bienvenus beaucoup :) – midhunhk

1

Votre question pourrait être causé par le fait que Flash est mono-thread. Essayez de remplacer l'importation par at timer, pour supprimer l'opération cpu-intesive. Si le problème ne se pose pas, un peu de code pourrait accélérer le débogage :)

0

Donc, si vous voulez juste un spinner, vous n'avez plus besoin de données. Si vous voulez une barre de progression, vous devrez juste savoir combien de données il y a (probablement la taille du zip sera assez précise). Puis - avoir un Event.ENTER_FRAME écouteur dans lequel vous prendrez une partie des données, insérez dans le tableau ... Et arrêtez-vous là. Il montrera ensuite l'animation des choses. Essayez de voir quelle quantité de données est optimale ... Très probablement en ajoutant un compteur FPS là aussi, et si cela devient trop bas, diminuez le montant.

Si vous voulez la barre de progression, il suffit d'incrémenter une variable avec combien d'octets ont déjà été analysés, et diviser cela par le total des octets - un ratio pour la barre de progression. Reste même que spinner.

Questions connexes