IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flash Discussion :

[FLASH MX 2004] Surcharge de onPress sur des MC dynamique


Sujet :

Flash

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 8
    Points : 5
    Points
    5
    Par défaut [FLASH MX 2004] Surcharge de onPress sur des MC dynamique
    Bonjour,

    je développe une application en Flash7 et je n'arrive pas à affecter la méthode onPress sur des images chargées dynamiquement dans des MovieClip eux-meme chargés dynamiquement

    en fait, j'ai un tableau de produits ( nom, img....) et pour chaque produit je dois afficher une image, les unes à coté des autres. Les images doivent être cliquables afin d'aller ensuite sur un descriptif de produit.

    voici mon petit morceaux de code...
    qq'un peut-il m'aider ???

    Merci BCP !!!

    Sandrine.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    x = 8;
    // affichage des images avec leur position :
    for (i=0;i<listeProduit.length;i++){
    	this.createEmptyMovieClip("ClipProduit"+i,i);
    	a = i/x;
    	chaine = a.toString();
    	tab = chaine.split(".");
    	j=tab[0];
                    // Calcule de la position du clip à insérer :
    	_root["ClipProduit"+i]._x=40+(i-(j*x))*50;
    	_root["ClipProduit"+i]._y=80+j*70;
    	URLimg = listeProduit[i].img;
    	_root["ClipProduit"+i].loadMovie(URLimg);
                    // redimensionnement de l'image :
    	_root["ClipProduit"+i]._xscale=50;
    	_root["ClipProduit"+i]._yscale=50;
                   // Surgarge de méthode OnPress() sur le MovieClip :
                   ??????
    }
     
    // Mise à jour de la scène :
    updateAfterEvent();
    stop();

  2. #2
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    il faut faire ton onPress apres que l'image soit totalement chargée car le loadMovie écrase ton OnPress , utilise la classe MovieCliploader

  3. #3
    Membre éprouvé
    Avatar de thecaptain
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2003
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Décembre 2003
    Messages : 919
    Points : 1 210
    Points
    1 210
    Par défaut
    Salut,

    de plus utilise le typage fort dans MX2004 Cela apporte une certaine optimisation (mm du coté mémoire ) J'ajouterai aussi que ton updateAfterEvent() n'est pas nécessaire ici

    @++
    Libzippp (C++)
    Lost in AStorm

  4. #4
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    je ne m'en sors toujours pas !!! j'ai modifié mon code avec tes infos, mais je n'arrive tjs pas à positionner le onPress sur mes "ClipProduit<i>"...
    Peux-tu me dire ou insérer mon code ( dans le onComplete ? dans le OnLoadInit ? ) et quel syntaxe utiliser : ClipProduit<i>.onPress= function() { ....}; ?

    Merci pour ton aide.

    Sandrine.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    // nb de produit par ligne :
    x = 8;
     
    // affichage des images avec leur position :
    for (i=0;i<listeProduit.length;i++){
    	this.createEmptyMovieClip("ClipProduit"+i, i);
    	monMCL = monMovieClipLoader+"i";
    	monMCL = new MovieClipLoader();
    	monEcouteur = new Object();
    	monEcouteur.onLoadComplete=function(){
    		trace("Chargement terminé");
    	}
    	monEcouteur.onLoadInit=function(){
    		trace("Fichier utilisable");
    	}
    	monMCL.addListener(monEcouteur);
    	URLimg = listeProduit[i].img;
    	monMCL.loadClip(URLimg, "ClipProduit"+i);
    	a = i/x;
    	chaine = a.toString();
    	tab = chaine.split(".");
    	j=tab[0];
    	_root["ClipProduit"+i]._x=40+(i-(j*x))*50;
    	_root["ClipProduit"+i]._y=80+j*70;
    	_root["ClipProduit"+i]._xscale=50;
    	_root["ClipProduit"+i]._yscale=50;
    }

  5. #5
    pki
    pki est déconnecté
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 16
    Points : 19
    Points
    19
    Par défaut
    howdy and welcome
    une trés bonne solution efficace a tous ça c de creer deux mc un pere et un fils le pére pour les evenements et le fils pour le load c clair
    THE MATRIX HAS YOU
    ----------------------------
    end transmission
    ----------------------------
    harrathi issam

  6. #6
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    A quel moment tu mest ton onPress car je ne le vois pas ton deuxième code

  7. #7
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    eh bien en fait je ne sais trop ou le mettre justement...

    je l'aurai bien mise à la fin de ma boucle 'for', mais tout ce que je fais ne fonctionne pas !!!

    j'ai tenté de mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    _root["ClipProduit"+i].onPress = function{
        ....Actions
    }
    ou encore :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    _root["ClipProduit"+i].prototype.onPress = function{
        ....Actions
    }
    mais je n'arrive à rien !! le onPress se met bien sur le MovieClip et pas sur le MovieClipLoader n'est ce pas ?

  8. #8
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    mets ton onPress dansonLoadInit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     monMCL.onLoadInit = function (targetMC)
    {
            targetMC.onPress = function () {
                trace("toto")
            }
    }

  9. #9
    pki
    pki est déconnecté
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 16
    Points : 19
    Points
    19
    Par défaut
    si tu teste ça en local ca ne va pas marcher c garanti
    THE MATRIX HAS YOU
    ----------------------------
    end transmission
    ----------------------------
    harrathi issam

  10. #10
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup, j'ai modifié mon code avec ta syntaxe ce qui donne :
    -------------------------------------------------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    for (i=0;i<listeProduit.length;i++){
    	this.createEmptyMovieClip("ClipProduit"+i, i);
    	monMCL = new MovieClipLoader();
    	monEcouteur = new Object();
    	monEcouteur.onLoadInit=function( targetMC ){
    		targetMC.onPress = function () { 
                 	                         afficheDetailProduit(i);
                                    } 
    	};
    	monMCL.addListener(monEcouteur);
    	URLimg = listeProduit[i].img;
    	monMCL.loadClip(URLimg, "ClipProduit"+i);
    	a = i/x;
    	chaine = a.toString();
    	tab = chaine.split(".");
    	j=tab[0];
    	_root["ClipProduit"+i]._x=40+(i-(j*x))*50;
    	_root["ClipProduit"+i]._y=80+j*70;
    	_root["ClipProduit"+i]._xscale=50;
    	_root["ClipProduit"+i]._yscale=50;
    }
     
    function afficheDetailProduit(i){
    	_global.FP = i;
    	gotoAndStop(3);
    }
    ------------------------------------------------------------------------
    j'arrive bien à afficher 'toto' si je fais un trace("toto") dans afficheDetailProduit(), par contre je n'arrive pas à récupérer le rang de mon produit dans ma liste de produit, j'ai pourtant mis ma variable en globale !!! en fait dans i je retrouve mon nombre de produit total et pas le rang de mon produit !!!
    vois-tu comment je peux récupérer mon rang dans ma 3ème scène ( gotoAndStop(3) )

  11. #11
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    je te demandrais d'utiliser les balises codes
    j'arrive bien à afficher 'toto' si je fais un trace("toto") dans afficheDetailProduit(), par contre je n'arrive pas à récupérer le rang de mon produit dans ma liste de produit, j'ai pourtant mis ma variable en globale !!! en fait dans i je retrouve mon nombre de produit total et pas le rang de mon produit !!!
    vois-tu comment je peux récupérer mon rang dans ma 3ème scène ( gotoAndStop(3) )
    1. ne crée pas a chaque fois un écouteur tu peux le réutiliser a chaque fois, c'est l'interet
    2. pour faire que tu cherches tu dois passer par une autre clips qui stockeras tes varaibles

  12. #12
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    à koi correspond le targetMC exactement ?

    je ne comprends pas ce qu'il faut que je fasse

  13. #13
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    Citation Envoyé par sandrineLL
    à koi correspond le targetMC exactement ?

    je ne comprends pas ce qu'il faut que je fasse
    il faut que tu regarde l'aide

    TargetMc est le nom de ton Mc chargé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    monMCL = new MovieClipLoader();
     monEcouteur = new Object();
     monEcouteur.onLoadInit=function( targetMC ){
          targetMC.onPress = function () {
                trace(this);
         }
       };
     monMCL.addListener(monEcouteur);
     
    for (i=0;i<listeProduit.length;i++){
       this.createEmptyMovieClip("ClipProduit"+i, i);
       URLimg = listeProduit[i].img;
    /* charge l'image*/
       monMCL.loadClip(URLimg, "ClipProduit"+i);
       a = i/x;
       chaine = a.toString();
       tab = chaine.split(".");
       j=tab[0];
       _root["ClipProduit"+i]._x=40+(i-(j*x))*50;
       _root["ClipProduit"+i]._y=80+j*70;
       _root["ClipProduit"+i]._xscale=50;
       _root["ClipProduit"+i]._yscale=50;
    }

  14. #14
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 8
    Points : 5
    Points
    5
    Par défaut MERCI !!!!!
    Merci beaucoup....

    Tu m'as vraiment bcp aidé...ca marche bien maintenant, j'ai réussit à récupérer le rang de chaque produit pour le onPress.

    Merci encore.

    Sandrine.

  15. #15
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    super ,

    la prochaine fois appuie sur le bouton résolu quand tu as finsi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/01/2013, 11h07
  2. Réponses: 7
    Dernier message: 23/01/2008, 23h36
  3. [Flash MXPro] Masque sur des textes dynamiques
    Par morgiane dans le forum Flash
    Réponses: 4
    Dernier message: 17/04/2007, 09h45
  4. Réponses: 2
    Dernier message: 22/02/2006, 11h15
  5. Réponses: 6
    Dernier message: 18/04/2005, 21h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo