2011-08-10 2 views
1

J'ai créé une liste simple d'images qui doivent être rechargées toutes les 60 secondes. Cependant, j'ai remarqué que lorsque le processus de rechargement commence, Flash semble se bloquer ou du moins n'accepte/ne mémorise aucune entrée de souris. Plus précisément, alors qu'il est censé être gelé, j'essaie de cliquer sur un bouton pour exécuter sa fonction habituelle, qui montre actuellement l'état de la souris, mais il n'inscrit pas le clic tant que le gel n'est pas terminé. Ce qui me oblige à cliquer à nouveau.Y at-il un blocage ou un décalage lors de l'utilisation de la fonction Loader.load() dans Flash/AS3?

je vraiment besoin de savoir, si je chargeais dire 5 petites images .png (appelant load() 5 fois dans une boucle) serait cette cause Flash pour bloquer et ignorer toutes les entrées de la souris ou que je parle fou et devrais regarder ailleurs pour le problème.

Je comprends que Flash n'est pas multithread, mais appeler load() ne provoque pas l'arrêt complet de l'application pendant 100-200 millisecondes?

Toute contribution est grandement appréciée, merci.

+0

Je serais prêt à dire qu'il est certainement la cause du gel. Voir ma réponse récente ici: http: //stackoverflow.com/questions/7017317/cpu-usage-in-as3/7017560#7017560. Je viens de trouver la documentation officielle que Flash fonctionne à environ 1,2% d'efficacité par rapport au code C natif. Donc, malheureusement, mon ami, il s'agit probablement d'une question liée à la performance. Cependant, il existe peut-être un moyen d'optimiser votre code, alors postez le code en question ici et nous pouvons l'examiner. :) –

+0

Merci pour l'information Ascension Systems, bien que j'apprécie vraiment certaines preuves liées à la fonction 'load()' actuelle. Votre autre réponse m'a donné beaucoup de bonnes informations, merci encore. – xLite

+0

Une chance de voir du code?Quelle classe utilisez-vous pour effectuer le chargement? – NoobsArePeople2

Répondre

0

Pour répondre à ma propre question, non, il n'y a pas de retard ou de blocage. Flash parvient à gérer tout bien il s'avère que vous devriez faire attention quand vous utilisez MouseEvent.CLICK car si vous échangez l'objet image pendant un rechargement après avoir fait un mousedown mais avant un mouseup, flash ne distribuera pas l'événement click comme vous l'avez pas causé un mousedown et mouseup sur le même objet. Ce qui m'a apparemment fait penser qu'il y avait un décalage car il semblait que Flash n'avait pas enregistré mon clic de souris.

Merci à tout ce qui a essayé de résoudre le problème.

2

En réponse à votre commentaire:

ne peut pas donner la preuve plus précise autre que de dire que l'objet Loader charge en fait un swf ou un certain type d'objet d'affichage et clignote modifie en interne les données binaires, puis en interne analyse le type SWF ou bitmap et le restitue à l'objet d'affichage .content dans l'objet Loader. Nevermind envoi de la demande d'URL qui récupère les données binaires avant tout cela. Il se passe beaucoup de choses en arrière-plan de l'objet loader. Si vous voulez une preuve sur la modification des données binaires, il suffit de charger une image, puis copiez les octets hors du chargeur et enregistrez-le quelque part. Comparez ensuite avec les données d'origine. Vous verrez la modification là et en fait, si vous sauvegardez les octets de sortie dans une image et essayez de l'ouvrir avec une visionneuse d'image, cela ne fonctionnera pas, c'est aussi la preuve de la modification. En dehors de cela, vous pouvez poster un lien vers le fichier SWF et demander à d'autres personnes de le tester pour confirmer que la même chose leur arrive, ce que je suis sûr que ce sera le cas. C'est à peu près le nombre de preuves que vous obtiendrez puisque tout code lié au chargeur ou aux objets d'affichage est une source fermée et n'est pas inclus dans le projet Tamarin, la partie open source de la machine virtuelle flash.

Questions connexes