2011-04-19 2 views

Répondre

2

Il est appelé uniquement si vous utilisez explicitement stage.invalidate();

Vous devriez noter qu'il y a certains bugs et des considérations spéciales (ou au moins il y avait des bugs dans FP9, qui est la dernière fois que j'ai utilisé stage.invalidate) liés aux listeners pour Event.RENDER.

  1. Peu importe combien d'objets différents écouter les événements Event.RENDER, si même l'un d'entre eux appelle removeEventListener (Event.RENDER ... puis tous auditeurs sont supprimés. A ma connaissance, RENDRE est le seul événement sur lequel ce bogue se produit (ou utilisé dans FP9)

  2. vous ne pouvez pas utiliser stage.invalidate() à l'intérieur d'un gestionnaire d'Event.RENDER. Puisque vous ne souhaitez appeler stage.invalidate afin de déclencher la gestionnaire de rendu, cela ne devrait pas poser de problème, espérons-le,

EDIT: bigp dans le commentaire ci-dessous fait une observation valide que Flex peut en effet utiliser stage.invalidate sous le capot. Prenez ma réponse en tant que celui qui s'applique strictement à vanilla AS3 sans aucun cadre d'accompagnement tel que Flex.

+0

Est-ce que ça s'appelle toutes les images alors si vous utilisez stage.invalidate()? – redconservatory

+1

Il est ** seulement ** appelé lorsque vous appelez explicitement stage.invalidate(). Si vous appelez stage.invalidate dans un gestionnaire ENTER_FRAME, alors oui. Sinon, non. En général, vous ne l'appellerez pas dans un gestionnaire ENTER_FRAME. Il était destiné à être un moyen de faire des mises à jour "de dernière minute" à la liste d'affichage avant qu'il ne rende. Malheureusement, ce n'est pas toujours réussi. Si vous ciblez le FP10, vous pouvez faire mieux d'utiliser les autres événements de trame tels que FRAME_CONSTRUCTED ou EXIT_FRAME pour avoir un meilleur contrôle sur les événements. De quoi exactement avez-vous besoin .RENDER pour? – scriptocalypse

+0

Je pense que c'est une réponse correcte partielle. Dans les applications Flex, ceci peut être déclenché par n'importe quel composant changeant d'aspect (rollovers, transitions, effets, tweens). Il peut appeler en interne le 'stage.invalidate();' méthode, mais je pensais qu'il pourrait être utile de noter que sous le capot, Flex gère assez partout un élément visuel peut changer. – bigp

Questions connexes