begin process at 2008 07 04 14:33:59
1 204 689 membres
220 nouveaux aujourd'hui
14 118 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : URGENT : comment affecter une fonction rollover à tout les clips automatiquement [ Archives / Animations ] (geoboy)

URGENT : comment affecter une fonction rollover à tout les clips automatiquement le 16/03/2005 00:00:49

geoboy
Salut,
Voici mon soucis :

Je réalise une carte géographique dynamique composée de 115 régions. Au survol de la souris, chacune de ces régions (des MovieClip) doivent renvoyer des variables ou des données qui sont contenues dans un fichier text...

Ce que je sais faire :
1/ lire un fichier texte et récupérer les infos que j'ai besoin.
le fichier texte se présente de la façon suivante :
&IRIS542023=1,00000;54;mama;5;10;mimi;100,00;500
&IRIS543251=2,00000;55;papa;6;11;pipi;200,00;600
&IRIS548950=3,00000;56;tata;7;12;titi;300,00;700
&IRIS549861=4,00000;57;gaga;8;13;bibi;400,00;800
la programmation utilisée est :

theTexte = "donnees1.txt";
loadVariablesNum(theTexte, 0);
IRIS1.onRollOver = function() {
    nom = this._name;
    test = IRIS1;
    prod1 = IRIS1.split(";");
    prix1 = "prix1 = "+prod1[2];
    prix2 = "prix2 = "+prod1[3];
};
  ou IRIS1 est ne nom de ma premiere région ou MovieClip

Je sais faire le truc suivant (d'après un script piqué ici)
2/ affecter une action à toutes les MovieClip d'un niveau. Le code utilisé est le suivant (ou les IRIS[i] sont le nom de mes MovieClip)

niveau_complet=function(IRIS) {
    for (var i in IRIS) {
        if (IRIS[i] instanceof MovieClip) {
            IRIS[i]._visible=false;
        }
    }
}
niveau_complet(_level0);

avec ce programme, tout les MovieClip sont rendu invisible. _level0 peut être remplacé par une occurrence de clip.


Mon idée est de compiler les deux pour m'éviter de devoir écrire 115 fois le programme du 1/
d'où l'envi de struturer le code de la façon suivante :


---------------------------------------------------------------
theTexte = "donnees1.txt";
loadVariablesNum(theTexte, 0);


// --- ici je commence une boucle ---


niveau_complet=function(IRIS) {
    for (var i in IRIS) {
        if (IRIS[i] instanceof MovieClip) {
          
// --- ici je mets le rollover ----

ex : IRIS[i].onRollOver = function() { etc...}

    }

// --- fin de la boucle

}

// --- je renseigne "niveau_complet"

niveau_complet(_level0);

-----------------------------------------------------------------

Le seul HIC dans tout cela sait quand mettant une boucle,  je N'ARRIVE pas extraire les données du fichier texte, où alors juste la dernière ( le [i] max). Par contre si je demande dans le RollOver le nom du clip survolé (avec this._name), flash me renvoit la bonne info.
D'après moi (je pense que...), le problème se situe à la ligne de code où je (tente de) défini(r) le délimitateur
(    prod1 = IRIS[i].split(";");  )

Voilà mon "souci".
Qui pourra me sortir de cette mauvaise passe ?

veuillez recevoir, mademoiselle, madame, monsieur mes salutations les plus flashantes !

Re : URGENT : comment affecter une fonction rollover à tout les clips automatiquement le 16/03/2005 02:34:40

_benjy
ben tt tes clip deviennent invisible car tu les ecrase :
tu as bien des clip nommé
IRIS1, IRIS2, etc ...
et tu charge test variable au mm niveau que les clips
hors dans ton fichier texte il existe des var nommé IRIS1, IRIS2, etc
donc
kan tu lance flash
il cree les clip, puis charge au mm niveau les var du fichier texte ce qui recréer (et supprime au passage) de nouvelle variable dans flash avec le mm nom que tes clips donc ca les supprime

essai avec la classe LoadVars deja se sera mieux que loadvariablenum :

var variables = new Array();
var loader = new LoadVars();
loader.onLoad = function(success){
   if (!success) trace("erreur au chargement");
   else {
      for (var elt in this){
         if (elt != 'onLoad'){
           _root.variables[elt] = this[elt];
         }
      }
   }
}
loader.load('sources.txt');

et sur tt tes clips :

clipIRIS1,2,3....onRollOver = function() {
    prod1 = _root.variables[this._name].split(";");
    prix1 = "prix1 = "+prod1[2];
    prix2 = "prix2 = "+prod1[3];
};


et voilà c fini :)

++

Flash sans Limites
_Benjy

Re : URGENT : comment affecter une fonction rollover à tout les clips automatiquement le 16/03/2005 12:59:33

tom
(Admin CS)
Salut, essaye un truc dans ce genre. Je fais ca de tete, donc y a peut etre des erreurs...
Dans le cas ou tes clips sont sur la scene:

for (i in _root){
    if (_root[i]._name.indexOf("clipIRIS")>=0){
        _root[i].onRollOver = function(){
            // La fonction ici.
        }
    }
}

Le probleme, c'est qu'il faut donner un nom commencant par clipIRIS à tout tes clips.. C'est un peu moins chiant, mais quand meme...


Classé sous : rollover, niveau, movieclip, complet, iris

Participer à cet échange

Pub



Appels d'offres

Snippets en rapport

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS