gotoAndPlay();: Flash MX et autres bidulles de geek...

Gestionnaire de scrollWheel

J'ai écris une petite classe AS1 hier soir et je me suis dit qu'il pourrait être bien de la partager.

À toutes les fois que je veux faire fonctionner la roulette de souris avec un scrollBar, c'est un paquet de troubles. Le truc que j'avais nécéssitait un movieClip placé sur le root et je lui faisait un "TCallLabel" avec javascript pour envoyer celui-ci sur un frame pour appeler une fonction. Paquet de trouble peu portable.

Il y a aussi un bout de temps que je me disais que je devrais utiliser le onMouseWheel du player 7, même si je publie en 6. Et utiliser l'événement javascript d'IE 6 pour le player 6.

Je n'avais jamais trouvé de classe pour gérer la scroll avec Javascript, ni aucune pour gérer le scroll avec l'événement du player 7. J'ai décidé d'en faire une qui gèrerait les deux, en intégrant une détection de la version du player.

Je n'ai jamais trouvé de méthodes pour appeler une méthode à partir de javascript, seulement des trucs pour contrôller le timeline et des propriétés. Mais m'est venu l'idée de faire un "addProperty" et me servir de la méthode setter pour faire les actions. Et ça fonctionne. En mettant l'instance en _global, le javascript est portable facilement sans jouer avec le path.

Comme le nom de son instance ne doit pas varier, si on veut que le javascript fonctionne, et comme il serait inutile d'instancier plusieurs fois, j'ai appliqué l'équivalent d'un pattern Singleton. Hey oui, faisable en AS1, quoique un peu moins éléguant qu'en AS2.

C'est loin d'être la découverte du sciècle, mais c'est à mon avis très utile pour ceux qui travaillent en AS1 et souhaitent facilement faire fonctionner la roulette de souris avec leur scrollBar. J'ai même ajouté une méthode (patchées avec des prototype), qui une fois appelée, fais fonctionner la roulette avec tous les ScrollPane de MM (composants v1). Avec cela, j'ai pu, en 2 minutes, faire fonctionner la roulette sur un paquet de sites existants que j'avais fait. Cela ajoute beaucoup à l'ergonomie d'un site à mon avis.

Alors donc voici pour vous: steWheelManagerClass.

Un exemple d'utilisation est inclus dans le document. Les commentaires sont bienvenus.

Posté par stef |septembre 5, 2004 03:42 PM | TrackBack
Commentaires

Petite note. Les trucs utilisés permettront la roulette de fonctionner sur Internet Explorer 6 PC avec le player 6 et sur tous les browsers PC équipés du player 7. Donc un très fort pourcentage des gens. Mais ne fonctionnera aucunement sur Mac, MM n'ayant pas fait fonctionner l'événement sur le player Mac. Peut-être MM viendront à le faire fonctionner dans une version ultérieure...

Posté par: | septembre 5, 2004 04:20 PM

Je pense que la molette sur tous les OS sera pas un mal au niveau ergo dans la prochaine version de flash.. comme la gestion de toutes les CSS pour le texte :)
Je dirai juste que la gestion de la molette pour le moment n'est pas super précise sur flashMX 2004... j'ai assez de mal pour faire une classe stable de scroll à ce niveau là.
Je vois que tu t'es mis à mettre des Authors Properties toi aussi ;)
Si un jour j'ai un projet en AS1 (plus trop pour le moment) je regarderai ta classe, elle peut servir :) Merci ;)

Posté par: | septembre 5, 2004 04:54 PM

Héhé oui, je te l'ai volé celle-là, les author properties, je l'aimais bien! :)
En fait, je l'ai fait plutôt pour les projets 'passés' que 'futurs', puisque je passe à l'AS2 complètement pour mon prochain projet. Je vais sûrement en écrire une version AS2, mais comme souvent en AS2, je risque éventuellement de publier carrément pour player 7, la passe passe de javascript ne sera plus requise.

Posté par: | septembre 5, 2004 04:59 PM

c'est clair on va pas cracher sur tout ce qui est en natif dans flash... un exemple marrant c'est au début, au lancement de FLASHMX 2004, j'ai mi un certain temps à utiliser la classe MovieClipLoader... j''avais fait ma propre classe de loading, j'en était fier lol .. mais en fin de compte, MovieClipLoader c'est vraiment ce qu'il y a de mieux. :)

Posté par: | septembre 6, 2004 02:25 AM

héhé, j'ai fait pareil!
J'avais eu une version 'traduite' de la classe de Bokel et c'est ce que j'utilisais! Je l'utilise toujours d'ailleurs...
Le gros inconvéniant de la classe de MX04, c'est qu'elle n'est diisponible que pour player 7, et je publie encore pour le 6... Mais dès qu'on peut passer au 7, je passe à MovieClipLoader.

C'est d'ailleurs pour cela que j'ai fait cette classe de scroll, pour les sites publiés en 6. Comme on sait que plusieurs sont sur le 7, on peut utiliser la fonctionnalité pour ceux là, tout en continuant d'utiliser le truc pour player 6. Un genre de classe de transition, pour sites faits pour player 6, utilisés maintenant.

Posté par: | septembre 6, 2004 03:40 AM

On a encore 'double travail' pour le moment... en gardant cette optique de transition, j'espère que la prochaine version de flash fera en sorte de tous nous faire passer en AS2 :)

Posté par: | septembre 6, 2004 03:53 AM

Zwetan a posté récemment une très bonne remarque concernant les Singletons dans le contexte de l'ECMA script : il s'agit d'utiliser simplement un objet comme conteneur des méthodes du singleton. Je passe sur les détails, et sur l'intérêt, c'est beaucoup plus drôle et complet quand c'est lui qui raconte (nttp://flashcodeurs.dyndns.org message [FLA MX][AS2]).

Posté par: | septembre 9, 2004 03:07 PM
Poster un commentaire

Vous souhaitez suivre les commentaires sur ce site ? Un fil RSS est disponible ici.
bottom