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 MX2004] Faire une frise


Sujet :

Flash

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 93
    Points : 50
    Points
    50
    Par défaut [FLASH MX2004] Faire une frise
    bonjour,

    je voudrais faire une frise d'images qui defile de droite à gauche
    pour cela j'utilise action script
    avec le code suivant sur un clip
    le probleme est que avec celui ci j'ai uniquement 2 passages
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    onClipEvent (load) {
    	_parent.mcClip1.duplicateMovieClip("mcClip2", 1);
    }
    onClipEvent (enterFrame) {
    	for (var i = 1; i<3; i++) {
    		if(i==1){var y = i+1}
    		if(i==2){var y = i-1}
    		if (_parent["mcClip"+i]._x == 0) {
    			_parent["mcClip"+y]._x += 1015;
    		}
    		_parent["mcClip"+i]._x -= 50;
    	}
    }

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 93
    Points : 50
    Points
    50
    Par défaut
    Personne pour m'aider ou m'orienter vers un tutotiel?

  3. #3
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Points : 8 779
    Points
    8 779
    Par défaut
    Salut,

    J'ai pas très bien compris ce que tu cherches à faire
    Tu peux détailler ton code?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 93
    Points : 50
    Points
    50
    Par défaut
    oui,

    en fait j'ai essayé d'adapter ce code pris sur un autre .fla

    ce que je voudrais faire :
    il existe un clip (mcClip1)avec des images que je veux deplacer de droite à gauche
    si son _x ==o alors je duplique ce clip(mcClip2)
    et je met son _x à 1015(c'est à dire à la suite de mcClip1)
    donc visuellement on voit passer mcClip1 et mcClip2 et apres plus rien
    et ce que je veux faire : c'est faire une boucle "infinie" avec ces deux clips... par ex mettre le _x de mcClip1 à 1015 qd mcClip2 ==0
    mais ça ne marche pas ...

    voici le code "sans boucle" qui se trouve dans un clip(moteur) invisible sur la scene
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    onClipEvent (enterFrame) {
    		if (_parent["mcClip1"]._x == 0) {
    			_parent.mcClip1.duplicateMovieClip("mcClip2", 1);
    			_parent["mcClip2"]._x += 1015;
    		}
    		_parent["mcClip1"]._x -= 50;
    		_parent["mcClip2"]._x -= 50;
    }
    avec ça je vois passer mes mcClip1 et mcClip2 et puis c'est tout
    comment faire pour mettre le _x de mcClip1 à 1015 qd mcClip2 ==0, afin de créer cette boucle?

    merci de ton aide

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    peut-etre pourrais-tu avant l'enterFrame mettre tes deux MC dans un Array() et ensuite dans ton enterFrame, faire le test de position sur les indexs du Array() quand le premier sort de ta zone tu utilise la function splice(indexDeDebut, nombreAeffacer ) donc peut-etre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var retire = MonArray.splice(0,1)
    et ensuite tu le replace en fin de tableau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MonArray.push(retire)
    et ensuite quelque chose (apres la condition) comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MonArray[0]._x-= 50;
    MonArray[1]._x= MonArray[0]._x+MonArray[0]._width;

  6. #6
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Points : 8 779
    Points
    8 779
    Par défaut
    Essaye peut-etre un truc comme cela pour rester dans l'esprit de ton code

    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
    var conteneur_mc:MovieClip = _root;
    var cpt:Number = 1;
    var vitesse:Number = 10;
    var xOrigine:Number = 50;
    var yOrigine:Number = 50;
     
    _root.onLoad = function() {
    	conteneur_mc.attachMovie("tonClipEnBiblio", "mcClip1", conteneur_mc.getNextHighestDepth(), {_x:xOrigine, _y:yOrigine});
    }
    _root.onEnterFrame = function() {
    	if(conteneur_mc["mcClip"+_cpt]._x <= xOrigine) {
    		conteneur_mc["mcClip"+(cpt-1)].removeMovieClip();
    		conteneur_mc["mcClip"+cpt].duplicateMovieClip("mcClip"+(cpt+1), conteneur_mc.getNextHighestDepth());
    		conteneur_mc["mcClip"+(cpt+1)]._x = conteneur_mc["mcClip"+cpt]._x + conteneur_mc["mcClip"+cpt]._width;
    		conteneur_mc["mcClip"+(cpt+1)]._y = conteneur_mc["mcClip"+cpt]._y;
    		cpt++;
    	}
    	conteneur_mc["mcClip"+(cpt-1)]._x -= vitesse;
    	conteneur_mc["mcClip"+cpt]._x -= vitesse;
    }

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 93
    Points : 50
    Points
    50
    Par défaut
    merci beaucoup de ton aide
    j'ai essayé mais ça ne marche pas
    peut etre que je m'y prend mal...
    sur la l'anim j'ai deux calques :
    le 1er contient une image avec la frise(mcClip1) avec X : 0.0
    le second, un clip en dehors de l'espace de travail appelé "moteur" dans lequel j'ai remplacé mon code par le tien
    apres test plusieurs erreurs
    **Erreur** Séquence = Séquence 1, calque = moteur, image = 1 :Ligne 1 : L’instruction doit apparaître dans le gestionnaire on/onClipEvent
    var conteneur_mc:MovieClip = _root;

    **Erreur** Séquence = Séquence 1, calque = moteur, image = 1 :Ligne 2 : L’instruction doit apparaître dans le gestionnaire on/onClipEvent
    var cpt:Number = 1;

    **Erreur** Séquence = Séquence 1, calque = moteur, image = 1 :Ligne 3 : L’instruction doit apparaître dans le gestionnaire on/onClipEvent
    var vitesse:Number = 10;

    **Erreur** Séquence = Séquence 1, calque = moteur, image = 1 :Ligne 4 : L’instruction doit apparaître dans le gestionnaire on/onClipEvent
    var xOrigine:Number = 50;

    **Erreur** Séquence = Séquence 1, calque = moteur, image = 1 :Ligne 5 : L’instruction doit apparaître dans le gestionnaire on/onClipEvent
    var yOrigine:Number = 50;

    **Erreur** Séquence = Séquence 1, calque = moteur, image = 1 :Ligne 7 : L’instruction doit apparaître dans le gestionnaire on/onClipEvent
    _root.onLoad = function() {

    **Erreur** Séquence = Séquence 1, calque = moteur, image = 1 :Ligne 10 : L’instruction doit apparaître dans le gestionnaire on/onClipEvent
    _root.onEnterFrame = function() {

    Total des erreurs ActionScript : 7 Erreurs signalées : 7
    j'ai donc ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    onClipEvent (enterFrame) {
    ton code
    }
    2 mcClip1 se deplace en meme temps et avec difficulté et la derniere partie de "s'allonge', "fait une trainée"...

  8. #8
    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,

    Oui c'est normal que tu aies toutes ces erreurs En MX2004 et MX TOUT le code se met sur le timeline ! Tu nommes tes objets et tu cibles directement Donc tu oublies tous les on(...) et onClipEvent(...) !!!! De plus en MX2004 utilise le typage fort

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var uneVar:String = "salut";
    var autre:Number = 5;
     
    this.monClip.onEnterFrame = function(Void):Void
    {
      //...
    }
    @++

  9. #9
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Points : 8 779
    Points
    8 779
    Par défaut
    Re,

    pour que mon code marche, tu mets mon code sur un calque et c'est tout!
    La scène reste vide!!!!
    Je crée dynamiquement le premier clip car la méthode removeMovieClip ne supprime que les clips créés dynamiquement (attachMovie, duplicateMovieClip).
    Sinon mcClip1 reste sur la scène


    Ps: L'erreur que tu cites, indiques que tu as placé le code sur un clip (moteur si j'ai bien compris). Cette utilisation de flash est "obsolète" (Syntaxe Flash 5).
    Désormais, il faut préférer la syntaxe pointée. Le code ne se place plus sur le clip mais sur le calque qui contient le clip ou sur un calque au même niveau.
    Typiquement, moi, je crée un calque que je nomme actionscript dans le lequel je mets tout le code, les autres, je les reserve pour l'interface.

    Avant :
    Sur le clip : on (enterFrame) {...}
    Mainternant :
    Sur le calque : tonClip.onEnterFrame = function() {...}

    [edit] Devancé par thecaptain [/edit]

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 93
    Points : 50
    Points
    50
    Par défaut
    ok merci
    j'ai donc viré tout mes calques, créé un nouveau ou j'ai placé ton code
    en test le clip apparait 1/2 seconde et puis plus rien...

    encore merci de ta patience...

  11. #11
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Points : 8 779
    Points
    8 779
    Par défaut
    Faute de frappe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(conteneur_mc["mcClip"+_cpt]._x <= xOrigine) {
    à remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(conteneur_mc["mcClip"+cpt]._x <= xOrigine) {
    Il y a un _ qui s'est malencontreusement invité devant ma variable cpt

    Désolé

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 93
    Points : 50
    Points
    50
    Par défaut
    super merci beaucoup
    c nickel!

    j'aurais une der question :
    existe t il une technique pour rendre les animations plus fluide?

  13. #13
    Expert éminent

    Avatar de freegreg
    Profil pro
    Inscrit en
    Août 2002
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Points : 8 779
    Points
    8 779
    Par défaut
    Tu augmentes le nombre d'images par seconde.

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

Discussions similaires

  1. [FLASH MX2004] Afficher une fenetre Alert
    Par nono2710 dans le forum Flash
    Réponses: 6
    Dernier message: 07/02/2007, 12h16
  2. Réponses: 2
    Dernier message: 24/11/2005, 18h33
  3. [FLASH MX2004] Faire un array d'une nouvelle class
    Par fransouik dans le forum Flash
    Réponses: 9
    Dernier message: 27/12/2004, 18h39
  4. Réponses: 6
    Dernier message: 14/12/2004, 03h47
  5. Réponses: 5
    Dernier message: 27/02/2004, 12h20

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