2009-02-10 7 views
1

Le préchargeur flash émet FlexEvent.INIT_PROGRESS événements pour signaler la progression de l'initialisation de l'application flash. Cependant, le nombre de fois cet événement est distribué dépend de l'application elle-même. J'essaye de déterminer ce nombre, mais je n'ai pas pu trouver une réponse dans la documentation de Flex, ainsi maintenant j'utilise l'expérimentation. Pour le rendre pire, il me semble que ce nombre varie de temps en temps, même si le fichier flash n'est pas modifié.Comment déterminer le nombre total d'événements "initProgress" provenant du préchargeur?

Existe-t-il une manière programmatique de donner au moins une estimation sur cette valeur?

Modifier: j'utilise cette information pour afficher une barre de progression dans le préchargeur. En fait, j'en montre deux, l'un en téléchargeant le programme, et un second en l'initialisant.

Répondre

0

Peut-être que cet événement est déclenché à chaque fois qu'un composant est initialisé?

Peut-être que cela vous aide si vous nous dites exactement ce que vous voulez faire. Nous pourrions essayer de trouver une solution alternative.

+0

J'ai sûrement beaucoup plus de composants que 14 (mon estimation actuelle pour init_progress compte). Les initialisations des composants sont-elles rapportées de cette façon? –

+0

Une très bonne question. Je crains de ne pouvoir vous aider avec ça. Mais peut-être que je pourrais aider à trouver une solution alternative. – thgie

-1

Vous devez baser votre barre de progression sur bytesLoaded/bytesTotal, et non sur le nombre de fois que le gestionnaire est appelé.

Par exemple:

preloader.loaderInfo.addEventListener(ProgressEvent.PROGRESS, onPreloaderProgress); 

Ensuite, dans votre gestionnaire, faire quelque chose comme ceci:

function onPreloaderProgress(e:ProgressEvent):void 
{ 
    progress = e.bytesLoaded/e.bytesTotal; 
} 
+2

C'est la progression du téléchargement, pas la progression de l'initialisation. –

1

Ne vous inquiétez pas le nombre total trop, dans mon expérience, cela devrait se produire si rapidement qu'il n'est pas nécessaire d'être complètement précis. Si vous faites quelques tests, et trouvez qu'il compte jusqu'à environ 14, alors réglez manuellement votre barre de progression pour avoir un maximum de 20. Les utilisateurs verront toujours la barre se remplir rapidement, car elle n'est pas à l'écran très longtemps , personne ne se soucie si c'est complètement exact.

1

La classe mx.preloaders.DownloadProgressBar utilise la valeur apparemment aribtrary de 12:

private var _initProgressTotal:uint = 12; 

// [...] 

protected function initProgressHandler(event:Event):void 
{ 
    // [...] 

    var loaded:Number = 100 * _initProgressCount/
    (_initProgressTotal - _displayStartCount); 

    // [...] 
} 

Je ne sais pas où ils obtiennent cette valeur, mais il semble fonctionner assez bien pour Adobe ...?

Questions connexes