Accueil > > > MENU TROP GOURMAND EN RESSOURCES (TWEEN & DÉTECTION SOURIS)
MENU TROP GOURMAND EN RESSOURCES (TWEEN & DÉTECTION SOURIS)
Information sur la source
Description
Salut à tous... Je me suis amusé à faire un menu avec déplacement des boutons et autres effets d'alpha en fonction de la position de la souris. Le résultat est très sympa , seulement il est bcp trop gourmand en ressources (le processeur est à 100%) . J'ai utilisé la class Tween pour gérer ces effets, mais comme je découvre tout juste les classes, il se peut qu'il y ait un gros bug :) le but de la manoeuvre : le menu se met en place quand on est sur la partie gauche du swf, il se repositionne si on s'en écarte. Pour celà, j'ai utilisé la détection de l'angle de la souris par rapport à un clip controlleur. Voici la source et merci pour votre aide !!
Source
- // importation de la class :
- import mx.transitions.Tween;
- import mx.transitions.easing.*;
-
- ////////////////////////////////////////////
- // déplacement des bt en fct de la souris :
-
- angleSouris.onEnterFrame = function (){
- if(angleSouris.angle>=90 & angleSouris.angle<=180){
- new mx.transitions.Tween(bt1, "_y", mx.transitions.easing.Regular.easeOut, bt1._y, 100, 1, true);
- new mx.transitions.Tween(bt2, "_y", mx.transitions.easing.Regular.easeOut, bt2._y, 130, 1.2, true);
- new mx.transitions.Tween(bt3, "_y", mx.transitions.easing.Regular.easeOut, bt3._y, 160, 1.4, true);
- new mx.transitions.Tween(bt4, "_y", mx.transitions.easing.Regular.easeOut, bt4._y, 190, 1.6, true);
- new mx.transitions.Tween(bt1, "_alpha", mx.transitions.easing.Regular.easeOut,bt1._alpha, 80, 1, true);
- new mx.transitions.Tween(bt2, "_alpha", mx.transitions.easing.Regular.easeOut, bt2._alpha, 80, 1.2, true);
- new mx.transitions.Tween(bt3, "_alpha", mx.transitions.easing.Regular.easeOut, bt3._alpha, 80, 1.4, true);
- new mx.transitions.Tween(bt4, "_alpha", mx.transitions.easing.Regular.easeOut, bt4._alpha, 80, 1.6, true);
- }else {
- new mx.transitions.Tween(bt1, "_y", mx.transitions.easing.Regular.easeOut, bt1._y, 50, 1, true);
- new mx.transitions.Tween(bt2, "_y", mx.transitions.easing.Regular.easeOut, bt2._y, 60, 1.5, true);
- new mx.transitions.Tween(bt3, "_y", mx.transitions.easing.Regular.easeOut, bt3._y, 70, 2, true);
- new mx.transitions.Tween(bt4, "_y", mx.transitions.easing.Regular.easeOut, bt4._y, 80, 2.5, true);
- new mx.transitions.Tween(bt1, "_alpha", mx.transitions.easing.Regular.easeOut, bt1._alpha, 30, 1, true);
- new mx.transitions.Tween(bt2, "_alpha", mx.transitions.easing.Regular.easeOut, bt2._alpha, 30, 1.2, true);
- new mx.transitions.Tween(bt3, "_alpha", mx.transitions.easing.Regular.easeOut, bt3._alpha, 30, 1.4, true);
- new mx.transitions.Tween(bt4, "_alpha", mx.transitions.easing.Regular.easeOut, bt4._alpha, 30, 1.6, true);
- }
- }
- /////////////////////////////////////////////////////////////////
- // 4 boutons: bt1, bt2.....
- var curBouton;
- for (var i=1; i<=4; i++){
- curBouton = this["bt"+i];
- curBouton.num = i;
-
- curBouton.onRelease = function(){
- trace(i); // affiche 5 pour tous les boutons
- trace(this.num); // affiche la valeur de i au moment où le onRelease a été créé
- monBt="bt"+this.num;
- trace("monBt : "+ monBt);
- }
- curBouton.onRollOver = function(){
- new mx.transitions.Tween(this, "_xscale", mx.transitions.easing.Regular.easeOut, this._xscale, 150, 0.5, true);
- new mx.transitions.Tween(this, "_yscale", mx.transitions.easing.Regular.easeOut, this._yscale, 150, 0.5, true);
- }
- curBouton.onRollOut = function(){
- new mx.transitions.Tween(this, "_xscale", mx.transitions.easing.Regular.easeOut, this._xscale, 100, 0.5, true);
- new mx.transitions.Tween(this, "_yscale", mx.transitions.easing.Regular.easeOut, this._yscale, 100, 0.5, true);
- }
- }
// importation de la class :
import mx.transitions.Tween;
import mx.transitions.easing.*;
////////////////////////////////////////////
// déplacement des bt en fct de la souris :
angleSouris.onEnterFrame = function (){
if(angleSouris.angle>=90 & angleSouris.angle<=180){
new mx.transitions.Tween(bt1, "_y", mx.transitions.easing.Regular.easeOut, bt1._y, 100, 1, true);
new mx.transitions.Tween(bt2, "_y", mx.transitions.easing.Regular.easeOut, bt2._y, 130, 1.2, true);
new mx.transitions.Tween(bt3, "_y", mx.transitions.easing.Regular.easeOut, bt3._y, 160, 1.4, true);
new mx.transitions.Tween(bt4, "_y", mx.transitions.easing.Regular.easeOut, bt4._y, 190, 1.6, true);
new mx.transitions.Tween(bt1, "_alpha", mx.transitions.easing.Regular.easeOut,bt1._alpha, 80, 1, true);
new mx.transitions.Tween(bt2, "_alpha", mx.transitions.easing.Regular.easeOut, bt2._alpha, 80, 1.2, true);
new mx.transitions.Tween(bt3, "_alpha", mx.transitions.easing.Regular.easeOut, bt3._alpha, 80, 1.4, true);
new mx.transitions.Tween(bt4, "_alpha", mx.transitions.easing.Regular.easeOut, bt4._alpha, 80, 1.6, true);
}else {
new mx.transitions.Tween(bt1, "_y", mx.transitions.easing.Regular.easeOut, bt1._y, 50, 1, true);
new mx.transitions.Tween(bt2, "_y", mx.transitions.easing.Regular.easeOut, bt2._y, 60, 1.5, true);
new mx.transitions.Tween(bt3, "_y", mx.transitions.easing.Regular.easeOut, bt3._y, 70, 2, true);
new mx.transitions.Tween(bt4, "_y", mx.transitions.easing.Regular.easeOut, bt4._y, 80, 2.5, true);
new mx.transitions.Tween(bt1, "_alpha", mx.transitions.easing.Regular.easeOut, bt1._alpha, 30, 1, true);
new mx.transitions.Tween(bt2, "_alpha", mx.transitions.easing.Regular.easeOut, bt2._alpha, 30, 1.2, true);
new mx.transitions.Tween(bt3, "_alpha", mx.transitions.easing.Regular.easeOut, bt3._alpha, 30, 1.4, true);
new mx.transitions.Tween(bt4, "_alpha", mx.transitions.easing.Regular.easeOut, bt4._alpha, 30, 1.6, true);
}
}
/////////////////////////////////////////////////////////////////
// 4 boutons: bt1, bt2.....
var curBouton;
for (var i=1; i<=4; i++){
curBouton = this["bt"+i];
curBouton.num = i;
curBouton.onRelease = function(){
trace(i); // affiche 5 pour tous les boutons
trace(this.num); // affiche la valeur de i au moment où le onRelease a été créé
monBt="bt"+this.num;
trace("monBt : "+ monBt);
}
curBouton.onRollOver = function(){
new mx.transitions.Tween(this, "_xscale", mx.transitions.easing.Regular.easeOut, this._xscale, 150, 0.5, true);
new mx.transitions.Tween(this, "_yscale", mx.transitions.easing.Regular.easeOut, this._yscale, 150, 0.5, true);
}
curBouton.onRollOut = function(){
new mx.transitions.Tween(this, "_xscale", mx.transitions.easing.Regular.easeOut, this._xscale, 100, 0.5, true);
new mx.transitions.Tween(this, "_yscale", mx.transitions.easing.Regular.easeOut, this._yscale, 100, 0.5, true);
}
}
Conclusion
Je compte sur vous pour m'aider, je mettrai à jour la nouvelle source dès que j'aurai la solution...
Historique
- 22 novembre 2005 01:15:15 :
- Voici la nouvelle version (menuTween3.fla + menuTween3), le menu ne bug plus (pas de saccades, ça ne bouffe plus de ressources processseur...) et j'y ai optimisé le changement de couleur des boutons dans la boucle. Pourquoi utiliser des tween ? d'abord parce que je me suis aperçu que les mouvements sont beaucoup plus fluides, que les mouvements peuvent changer à n'importe quel moment (c'est pas le cas avec une interpolation classique), et puis c'est tout de même assez simple à manipuler... Si j'ai étudié la question, c'est qu'il est plus simple de revoir qq lignes de code qd un client veux changer qq chose que de devoir repositionner tous ses clips si on ne code pas! Surtout quand comme moi on utilise beaucoup de clips imbriqués.
Je viens de finir un test avec des flous sous flash8 qui va vous prouver de l'efficacité des tween. Cliquez sur les boutons du menu (sauf portfolio ;) et regardez le papillon, sa taille et son ombre bouger... C'est la même source avec du code en + pour animer le papillon. Vous allez voir les mouvements sont très fluides : test.richardeau.net/menu/
Au fait, merci à zoukozouko d'avoir noté !!! c'est ma première source postée, maintenant qu'elle est optimisée, allez-y... votez ;)
-= SlimFlash =-
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
des titres de menu qui changent de couleur! [ par bengz ]
pas facile quand on débute.....Bonjour je debute en AS et je suis face à un probleme:-sur fichier en question j'ai plusieurs menus de couleur blanc, q
Faire un menu choix de couleurs [ par letilor ]
Bonjour a tous.Tout d'abord excusez moi si j'ai pas posté dans la bonne section mais vu que ma demande est floue la categorie l'est aussi lolSoit...Je
Comment changer la couleur du sous menu en as3 [ par hayaloum ]
Bonjour,je suis en train de faire un menu simple, sauf que je suis novice en flash et je ne connais pas le lexique des fonctions:en faite j ai 2 pb:-1
AS3 probleme boucle dans une succession d'images avec le même mvt issues d'un XML [ par vandaleavalanche ]
Salut, j'ai l'habitude des animations flash non dynamiques je suis designer mais je suis un codeur as3 débutant : je dois faire dans le cadre d'une a
Menu animé flash [ par Viiik ]
Bonsoir à tous, je développe une page d'accueil d'un site web en flash avec flash CS4 en actionscript 2 car je n'arrive pas à faire des liens avec le
Menu verticale, tween's problem [ par fanatikx ]
Salut, J'ai crée pour mon site un menu vertical, au rollover des boutons je fais appel pour chacun à des tween (genre bouton blanc et au rollover, u
Boucle variable dynamique tween [ par mic1331 ]
Bonjour a tous, je fais appelle a vos lumières car j'ai chercher sur pas mal de forum mais la solution n'ai toujours pas la bonne ! Donc je suis en as
Menu vertical en boucle [ par kitty38000 ]
Bonjour, J'aimerai créer un menu vertical en flash, qu'il serait possible de faire défiler grâce à un drag&drop (avec une zone de contrainte) pour qu
Aide pour le positionnement d'un Drop down menu Flash cs4 [ par sleeman26 ]
Bonjour à tous, J'ai créé un menu horizontal avec sous-menus à l'aide de Flash cs4 et tout fonctionne à merveille. Cependant, lorsque je l'insert dan
Flash menu dynamique avec XML intégration swfaddress [ par marine34000 ]
Bonjour à tous, Sur un de mes site, j'ai fait un menu flash qui appel un xml pour se constituer, le problème c'est que je voulais ajouter swfaddress
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|