2011-09-20 5 views
0

Il y a deux états qu'un préchargeur flash peut rencontrer.
1) Le totalBytes est connu (la taille de fichier final du swf)
2) Le totalBytes est inconnu (se produit si le serveur est la compression des fichiers servis/sortis).Flash Preloader, comment savoir si dans un environnement gzippé et charger en conséquence

J'utilise actuellement totalBytes == 0 (Chrome, Safari) pour que le swf soit indéterminé et affiche simplement une animation en boucle avec les octets chargés affichés. CEPENDANT dans Firefox totalBytes == loadedBytes. Je ne peux que supposer que cela a été fait pour éviter beaucoup de division par zéro exceptions lorsque le preloader essaie de déterminer le pourcentage téléchargé.

Le problème:
Existe-t-il un autre moyen de déterminer l'état de préchargement (taille de fichier définie ou taille de fichier indéterminée) dans lequel je suis?

Répondre

1

Si apache compresse ou gomme tout le trafic du serveur, le fichier swf perd des informations sur sa taille de fichier. Vérifiez la valeur totalBytes qui devrait normalement être la taille du fichier SWF, si elle est zéro, alors il est dans un environnement gzippé.

if (loaderInfo.totalBytes == 0) // gzipped environment 

Toutefois, un contrôle spécial de cas doit être fait pour Firefox, car Firefox définit les totalBytes == loadedBytes.

if (loaderInfo.totalBytes == loaderInfo.loadedBytes) // gzipped environment 
// OR the loaded swf is very small. 
// check the load is COMPLETE Event, if !loadComplete than gzipped environment 
0

Je vous recommande d'utiliser LoaderMAX. parce que c'est si simple et facile à utiliser pour charger des fichiers externes. check

+0

ne répond pas à mes questions. Il ne s'agit PAS d'utiliser une boîte à outils tierce, mais de comprendre quelle variable est utilisée. Aussi ne peut pas le réutiliser en raison des restrictions de licence. Besoin de revendre, redistribuer. – eLouai

Questions connexes