Zoomer en rollover

izarox Messages postés 2 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 28 juin 2007 - 28 juin 2007 à 15:46
Darkrats Messages postés 212 Date d'inscription mardi 2 novembre 2004 Statut Membre Dernière intervention 12 mai 2008 - 1 juil. 2007 à 12:52
Bonjour

J'ai 3 boutons sur mon _root (amerique, maritime et europe)

J'aimerais que lorsqu'on rollover ceux-ci, la carte zoom directement sur la bonne section.

cependant je ne sais pas comment réussir ceci

4 réponses

Darkrats Messages postés 212 Date d'inscription mardi 2 novembre 2004 Statut Membre Dernière intervention 12 mai 2008 1
28 juin 2007 à 16:23
Salut,

Tu dois lancer une boucle d'agrandissement quand on passe sur ton bouton :

// Action du bouton
amerique.onRollOver = function(){
    // lancement d'une fonction d'agrandissement
    agrandissement("amerique");
}
// Fonction de lancement de l'agrandissement demandé
function agrandissement(sContinent){
    // Création des différentes informations
    var valeur_x           :Number = 0;

    var valeur_y           :Number = 0;


    var valeur_zoom    :Number = 0;
    // Analyse du contient
    switch(sContinent){
       case "amerique":

             valeur_x   = 200;


             valeur_y   = 20;
             valeur_zoom = 150;
             break;

       case "europe":


             valeur_x   = 200;



             valeur_y   = 20;

             valeur_zoom = 150;

             break;

       case "maritime":


             valeur_x   = 200;



             valeur_y   = 20;

             valeur_zoom = 150;

             break;
    }
    // Zoom de la carte

    clip_carte._xscale clip_carte._yscale valeur_zoom;
    // Repositionnement de la carte (pour éviter que la carte ne sorte de ta zone de travail visible)
    clip_carte._x = valeur_x;
    clip_carte._y = valeur_y;
}

Voilà comment je le ferais.
Il te suffira d'encoder les nouvelles positions de la carte pour qu'elle soit centrée dans ton image.

Si tu veux que ta carte soit animée lors du zoom, il te faut mettre la partie qui zoom et qui repositionne ta carte (dans la fonction agrandissement) dans une boucle (onEnterFrame ou setInterval, au choix)

Si je ne réponds pas assez vite -> messagerie flashkod <--

--------- Darkrats ---------
la loi est dure mais c'est la loi
 -------
0
Darkrats Messages postés 212 Date d'inscription mardi 2 novembre 2004 Statut Membre Dernière intervention 12 mai 2008 1
28 juin 2007 à 16:42
Re-salut

Alors, comme tu me l'as dit par message privé, on ne peut mettre de FLA dans un post, par contre tu aurais pu le mettre sur un serveur externe et envoyer l'adresse.

Tu dis ne pas être sûr de comprendre et que tu es novice.
Bhein, je répondrai qu'il n'y a rien de difficile à comprendre, tout le code y est.

Il te suffit seulement de copier ce code et de le coller dans la frame où se trouvent tes boutons dans ton root.
Une fois que tu as copié le code, remplace les valeurs x, y et zoom de chaque continent et le tour est joué.

Le principe est que :
1. lorsque tu vas passer ta souris sur un bouton, prenons l'amérique pour exemple, la fonction : amerique.onRollOver = function(){ (...) } va se lancer
2. Cette fonction en appelle une plus générique (agrandissement) et lui passe en paramètre le continent que tu veux voir zoomer : "amerique"
3. La fonction agrandissement va analyser de quel continent tu parles (grâce au switch) et sauver des valeurs x, y et zoom.
4. Une fois que la fonction a trouvé quel est le continent demandé et qu'il a sauvé les informations, il va agrandir le clip de ta carte (grâce aux propriétés : _xscale et _yscale), ainsi que repositionner ta carte pour éviter qu'elle ne sorte de ton plan de travail (à l'aide de _x et _y)

La seule chose que tu as à faire c'est :
    1. copier le code sur un calque du root (là où il y a tes boutons)
    2. dupliquer le code "bouton" de l'amerique et remplacer les valeurs par : maritime et europe
    3. remplacer les valeurs dans le switch pour chaque continent

Est-ce plus clair ?

Réponds de préférence sur le forum plutot qu'en privé, ça permet à d'autres de suivre et de t'aider ou de s'aider en s'inspirant de ton problème .

Si je ne réponds pas assez vite, rappelez le moi
-> messagerie flashkod <--
(assez vite, j'ai dit :P)

--------- Darkrats ---------
la loi est dure mais c'est la loi
----------------------------
 
0
izarox Messages postés 2 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 28 juin 2007
28 juin 2007 à 17:04
Oki!! merci sa marche!! yééé!

mes 3 boutton marche quand on passe dessu on va la section agrandi et jai fait une autre fonction pour le rollout on voit limage de base

sauf que...:P

il y a tjs un sauf que!

j'aimerait voir une "transition" entre limage de départ et l'effet de zoom complété
0
Darkrats Messages postés 212 Date d'inscription mardi 2 novembre 2004 Statut Membre Dernière intervention 12 mai 2008 1
1 juil. 2007 à 12:52
Salut,

Pour les effets de transition, c'est assez simple. Tout dépend évidemment de l'effet en question.

Si ton effet est de simplement agrandir progressivement ton image voici comment je le ferais :

var interval :Number;

amerique.onRollOver = function(){
    // lancement d'une fonction d'agrandissement
    agrandissement("amerique");
}
amerique.onRollOut = function(){
    // Suppression de l'interval
    clearInterval(interval);
    // Redimensionner correctement la carte là je te laisse retaper le code ^^
}

// Fonction de lancement de l'agrandissement demandé
function agrandissement(sContinent){
    // Création des différentes informations
    var valeur_x           :Number = 0;
    var valeur_y           :Number = 0;
    var valeur_zoom    :Number = 0;
    // Analyse du contient
    switch(sContinent){
       case "amerique":
             valeur_x   = 200;
             valeur_y   = 20;
             valeur_zoom = 150;
             break;
       case "europe":
             valeur_x   = 200;
             valeur_y   = 20;
             valeur_zoom = 150;
             break;
       case "maritime":
             valeur_x   = 200;
             valeur_y   = 20;
             valeur_zoom = 150;
             break;
    }
    // Lancement en boucle de la carte
    interval = setInterval(agrandissement_progressif, 10, 5, 20, 20, 300, 200);
    // Cet interval lancera toutes les 10 milli seconde, un zoom progressif de 5% et déplacera la carte de 20pixel en x et en y seulement si la carte n'a pas un agrandissement = à 300 en x et 200 en y
}

// Fonction qui agrandit et recentre progressivement la carte
function agrandissement_progressif(valeur_zoom:Number, valeur_x:Number, valeur_y:Number, valeur_x_max:Number, valeur_y_max:Number){
    // Vérification que le zoom n'est pas déjà au maximum
    if(clip_carte._xscale != valeur_x_max && clip_carte._yscale != valeur_y_max){
        // Zoom de la carte
        clip_carte._xscale = clip_carte._yscale += valeur_zoom;
        // Repositionnement de la carte (pour éviter que la carte ne sorte de ta zone de travail visible)
        clip_carte._x += valeur_x;
        clip_carte._y += valeur_y;
    }else{
       clearInterval(interval);
    }
}

Enfin voilà un peu le principe.

En gros, tu dois créer une fonction qui effectuera progressivement ton effet et lancer une fonction "setInterval" ou "onEnterFrame" et penser à l'arrêter une fois fini.
A toi de règler les différents paramètres.

Si je ne réponds pas assez vite, rappelez-moi
-> messagerie flashkod <--
(assez vite, j'ai dit :P)

--------- Darkrats ---------
la loi est dure mais c'est la loi
----------------------------
0
Rejoignez-nous