2009-12-14 3 views
1

Poussé par la curiosité, j'essaie de comprendre le cycle de vie utilisé par Flex Application. Donc, j'ai fait un peu de recherche sur cet argument; les deux concepts clés utilisés dans le FlashPlayer sont:Comprendre l'application Flex et les cadres

  • SWF Cadre: il est l'unité logique qui contient le code graphique et code
  • Flash Player Cadre: il est l'intervalle de temps utilisé par l'exécution de Flash pour mettre à jour l'écran et défini par la propriété frameRate

Si oui, pourriez-vous m'expliquer la relation entre ces deux concepts? En particulier, sont-ils jumelés ou non?

La règle principale est la suivante: le flux Flash Player dans un swf; jusqu'à ce qu'un cadre SWF complet soit lu, le Flash Player ne peut pas le rendre.

Je vais essayer d'expliquer ce que j'ai besoin de comprendre. Par souci de simplicité, supposons que vous ayez une application à deux trames: SWF FR 1 et SWF FR 2.

En général (par exemple dans CS4) une trame est considérée comme une unité logique (délimitée par une étiquette ShowFrame) où vous peut attacher le code as3. Cette version simplifiée comme d'un fichier swf, je pense:

  • tête // frameRate est défini ici
  • symboles, des classes etc ... // ceci est FR1 === === ShowFrame
  • symboles, classes, etc ... // c'est FR2 === === ShowFrame Fin

Si vous avez deux châssis, FR1 et FR2, flash commence à exécuter FR1 et va à la suivante (FR2). Si vous n'arrêtez pas l'exécution, le lecteur exécute et restitue le code contenu dans FR1 et FR2 via une boucle infinie. Au contraire, lorsque vous arrêtez l'exécution, par exemple dans FR2, le lecteur flash boucle le code d'exécution contenu dans FR2. Donc, est-ce que Flash Player Frames peut avoir lieu plusieurs fois par image SWF?

Lorsque FR1 est en cours de chargement (FR1 n'est pas complètement chargé) existe-t-il des événements enterFrame ou non? Le premier frameEvent a-t-il lieu lorsque le FR1 est entièrement chargé? Pendant quelle période FR1 est-il rendu? Un autre scénario, si vous avez appelé la commande d'arrêt dans FR1, vous obtiendrez enterFrame au débit que vous spécifiez (l'image courante est FR1). Pendant ce temps, FR2 est en train de télécharger. Quand c'est fini, vous passez à l'image suivante (FR2). Pendant quelle période FR2 est-il rendu? Est-ce que Flash Player essaie de rendre FR2 à son prochain intervalle de temps?

Prenez en compte cette séquence simple:

  1. FR1 est en cours de téléchargement
  2. FR1 est entièrement téléchargé
  3. FR1 appelle la méthode d'arrêt(), quant à lui FR2 est en cours de téléchargement
  4. FR2 est entièrement téléchargé
  5. Passez à FR2
  6. FR2 appelle la méthode stop()
  7. Et ainsi de suite

Pourriez-vous me souligner lorsque les événements enterFrame de Flash Player ont lieu?

Nous vous remercions de votre temps. Cordialement, Flex_Addicted.

Répondre

0

Bien qu'il semble que vous ayez définitivement étudié les choses, certaines de vos hypothèses sont incorrectes. Flex est un code Flash écrit dans un joli cadre. Donc, tout se résume à des cadres qui sont un mélange de code exécutant et les résultats de ce code en cours d'exécution, de rendu. Lorsque tout le code requis a été exécuté et que le processus de rendu est terminé, le cadre est terminé et le lecteur flash passe à l'image suivante.

Alors votre enterFrame est appelé.

Maintenant, il n'est pas courant en tant que développeur Flex d'écouter l'événement enterFrame. Pour comprendre les applications Flex, il suffit de penser qu'il s'agit d'applications Flash, la première image étant un cadre de chargement et la seconde étant l'application. Ce sont les sous-parties et leurs chronologies individuelles qui composent tout le reste des images. Ce concept crée une certaine confusion chez les gens parce qu'ils croient que l'enterFrame ne devrait être appelé que deux fois, ce n'est pas le cas.

La prochaine fausse supposition que beaucoup de gens ont est que juste parce que "aucun code n'exécute" que les cadres ne sont pas encore appelés. Ce n'est pas le cas. Juste parce que quelque chose ne change pas ne signifie pas que les cadres ne sont pas appelés et - sans les vérifications appropriées - de grandes quantités de traitement ne se produisent pas.

HTH

+0

Merci pour la réponse jonbcampos !!! Pourriez-vous expliquer plus en détail ces concepts? Que voulez-vous dire par cadre? Je suis vraiment intéressé et je comprendrais ce mécanisme que vous avez décrit. Merci encore. Meilleures salutations et bonne année –

+0

Si vous avez regardé l'environnement de développement Flash, une image est un seul point sur le calendrier. Au final, tout n'est qu'un grand film. – jonbcampos