04 avr

La classe StageResizeManager

Dernièrement lors de la réalisation d’un projet, j’ai eu besoin d’utiliser l’évènement RESIZE de la classe Stage, mais je n’étais pas entièrement satisfait de son fonctionnement. En effet, il est diffusé de manière répétée (et incontrôlable…) lorsque l’utilisateur redimensionne la scène, et cela était parfaitement incompatible avec ce que je voulais faire, à savoir une boucle sur plusieurs dizaines de Sprites avec repositionnement de chacun d’entre eux + mouvement. J’ai donc crée cette petite classe StageResizeManager qui diffuse un évènement au début du resize (RESIZE_START), puis ensuite l’évènement classique est diffusé de manière répétitive lors du redimensionnement (notez qu’il ne s’appelle plus RESIZE mais RESIZE_PROGRESS ) et enfin un dernier évènement (RESIZE_END) est diffusé à la fin du redimensionnement, c’est à dire n millisecondes après la fin de détection de mouvement de souris continu lors d’un resize. C’est lui qu’il est intéressant d’écouter.

La classe est un singleton, et la méthode qui permet de l’instancier prend deux paramètres. Le premier, pStage est obligatoire  et c’est la référence à la scène, le second est facultatif, sa valeur par défaut est de 250ms, et représente le délai après lequel l’évènement RESIZE_END est diffusé.

Le fichier d’exemple qui contient la classe est un projet Flex 3 qui ne fait rien d’autre que de tracer PIM, PAM et POUM en fonction des évènements diffusés. Cette classe n’utilise aucune particularité du framework Flex, elle est donc entièrement compatible avec tout projet en AS3.

################# edit du 8/05/2009
Après plusieurs demandes, j’ai ajouté les sources au format Flash CS3/CS4

voir_code_source

telecharger_code_source_flex

telecharger_code_source_flash

  • Share/Bookmark


related / voir aussi

3 Comments

  1. 1 9 avril 2009 at 10:15
    Permalink

    chouette !
    Merci :)

  2. 2 19 juin 2009 at 20:20
    Permalink

    HUmmm. le fait d’utiliser un timer ne « ralentit » pas le process ? ( vu que tu as un Timer + event Resize qui tournent en meme temps )

    j’ai eu un projet avec la meme problematique, et j’avais choisis de diffuser l’evenement tout les 5 tick:

    onResize -> i++
    et des que i = 5 –> on appelle les differentes fonctions de resize.

  3. 3 19 juin 2009 at 22:11
    Permalink

    @daweed très bonne idée le coup de l’incrément… je vais tester ça.

Add Comment

Your email is never published nor shared. Required fields are marked *

*
*