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] Question sur l'évenement onEnterFrame


Sujet :

Flash

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Par défaut [FLASH MX2004] Question sur l'évenement onEnterFrame
    Bonjour

    je voudrais juste savoir si par exemple je place dans une même image clée le code suivant

    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
    29
    30
     
     
    stop();
    nobjet = etoile;
     
    _root.nObjet.onEnterFrame = function() {
     
      if(nCpt == nFrames) {
    	  	delete this.onEnterFrame;
     
     
    	}
       nCpt++;
       //this._alpha -= (nAlpha1 - nAlpha2)/nFrames;
       this._x = this._x + (nPosX + 2);
    }
     
    nobjet = soleil;
     
    _root.nObjet.onEnterFrame = function() {
     
      if(nCpt == nFrames) {
    	  	delete this.onEnterFrame;
     
     
    	}
       nCpt++;
       //this._alpha -= (nAlpha1 - nAlpha2)/nFrames;
       this._x = this._x + (nPosX + 2);
    }
    j'ai remarqué que lors de l'execution de l'animation les 2 clips semblent subir la même action ... c'est à dire que l'évenement "OnEnterFrame" agit comme une action indépendante au restant du code c'est à dire que le clip "etoile" une fois l'evenement lancé vit sa "vie" tandis que la suite du code continu à être interprété donc le clip soleil à son tour subi l'evenement à son tour ..

    Je ne sais pas si j'arrive à me comprendre .. ce que je veux savoir c'est si l'evenement OnEnterFrame est un evenement independant au reste du script ??

    Je demande cela parce que dans le code donné ci-dessus normalement l'image etoile devrait "s'arrêtait en premier" puis ensuite devrait se lancer le clip soleil .. or dans mon cas c'est le clip soleil qui se termine en premier alors que le clip etoile continu à s'executer s'en jamais s'arrêter alors qu'il y a delete this.onEnterFrame; contenu dans la condition ...


    Donc j'ai finallement deux questions :

    l'evenement onEnterFrame agit-il comme une action independant au restant du code ?
    Pourquoi le clip etoile qui est censé s'arrêter en premier continu alors que le second s'arrête alors qu'il devrait se lancer aprés ?



  2. #2
    Membre éclairé Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Par défaut
    bon j'ai un peu avancé en ce qui concerne la variable <-- ici nFrames
    que j'appelle 2 fois


    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
     
    //on stop l'animation des le départ
    stop();
    //action sur la première image 
    var nAlpha1:Number = 100;
    var nAlpha2:Number = 0;
    var nFrames:Number = 20; <-- ici nFrames
    var nCpt:Number = 0;
    var nPosX , nPosY;
    var nObjet;
     
    nObjet = etoile_sud;
     
    nPosY = _root.nObjet._y;
    nPosX = _root.nObjet._x;
     
    _root.nObjet._alpha = nAlpha1; 
     
    _root.nObjet.onEnterFrame = function() {
     
      if(nCpt == nFrames) {
    	  	delete this.onEnterFrame;
    		//trace(nFrames);
    		//gotoAndStop(2);
     
    	}
       nCpt++;
       //this._alpha -= (nAlpha1 - nAlpha2)/nFrames;
       this._x = this._x + (nPosX + 2);
     
    }
     
    //action sur la seconde image
     
    nAlpha1= 100;
    nAlpha2 = 0;
    nFrames= 30; <-- ici nFrames
    nCpt = 0;
    trace(nPosY);
    nObjet = supporter1;
     
    nPosY = _root.nObjet._y;
    nPosX = _root.nObjet._x;
     
    _root.nObjet._alpha = nAlpha1; 
     
    _root.nObjet.onEnterFrame = function() {
     
      if(nCpt == nFrames1) {
    	  	delete this.onEnterFrame;
    		trace(nFrames1);
    	}
       nCpt++;
       //this._alpha -= (nAlpha1 - nAlpha2)/nFrames;
       this._x = this._x + (nPosX + 2);
     
    }
    //FIN
    j'ai donc changé cette variable pour l'appeler nframes1 et là le clip du soleil s'arrête avant celui du clip étoile parce que la valeur nFrames > nFrames1 ce qui est logique ...

    Par contre ceci je pense confirme que l'évenement onEnterFrame semble fonctionner comme independemment du reste du code en d'autre terme lorsque cet evenement est appelé la suite du code est lu ...

    Je pensais qu'il fallait attendre que la boucle soit terminée avt que la suite soit lu ... il en ainsi en developpement le code s'execute au fur et à mesure ...

    Pourriez vous me confirmer si je pense juste ?


    Merci[/b]

  3. #3
    Expert confirmé

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

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Par défaut
    SAlut,

    1) l'evenement onEnterFrame s'éxécute bien en parallèle (de manière indépendante) et non de manière sequentielle.
    Il n'attends pas d'avoir fini pour passer à nobject = soleil;

    2) je vois des nobject et des nObject, est-ce la même chose ?
    Si les 2 _root.nObject sont identiques, normalement le 2e devrait ecraser le 1er
    Enfin, en gros, j'ai pas tout compris à ton code

    [edit] J'avais pas vu le 2e réponse. J'avais commencé, coup de fil et hop devancé [/edit]

  4. #4
    Membre éclairé Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Par défaut
    d'accord je comprend mieux dans ce cas il me sera impossible de faire en sorte que le code soit sur une seule clée ... mais bien sur 2 clées ...

    à moins qu'il y aie une autre astuce ???

  5. #5
    Expert confirmé

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

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Par défaut
    Pas forcement : voilà une maquette
    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
     
    function f1() {
       var o:Object = this;
       ....onEnterFrame = function() {
            if(...) {
               delete this.onEnterFrame;
               o.f2();
           } else {
              ....
           }
        }
    }
    function f2() {
       ....onEnterFrame = function() {
            if(...) {
               delete this.onEnterFrame;
           } else {
              ....
           }
        }
    }
     
    f1();

  6. #6
    Membre éclairé Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Par défaut
    ok je vais essayer de me tepatouiller avec la "maquette" merci du tuyau bon j'y go

    j'éspère revenir avec de bonne nouvelle

  7. #7
    Membre éclairé Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Par défaut


    bon j'ai reussi à obtenir ce que je voulais j'ai bien ma première image qui se déplace puis ensuite la seconde ..

    toute fois il y a certain point que je ne comprends pas c'est à dire pourquoi
    créer var o:Object = this;
    est-ce pour que l'objet second clip appelé vienne écraser le premier objet clip ?



    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    //on stop l'animation des le départ
    stop();
    //declaration des variables
    var nAlpha1:Number = 100;
    var nAlpha2:Number = 0;
    var nFrames:Number;
    var nCpt:Number = 0;
    var nPosX , nPosY;
    var nObjet;
     
    function f1() {
     
    var o:Object = this;
    nObjet = etoile_sud;
    nFrames = 10;
    nPosX = this._x;
    //trace(this);
     o.nObjet.onEnterFrame = function() {
     
      		if(nCpt == nFrames) {
    	  		delete this.onEnterFrame;
    			nObjet = supporter1;
     
    			o.f2();
    	//nObjet = etoile_sud;
    		}
    		nCpt++;
    		this._x = this._x + (nPosX + 2);
      }
    }
     
    function f2() {
     
    nFrames = 30;
    nPosX = this._x;
    nCpt=0;
    //trace(nObjet);
     	nObjet.onEnterFrame = function() {
     
      		if(nCpt == nFrames) {
    	  		delete this.onEnterFrame;
    		}
    		nCpt++;
    		this._x = this._x + (nPosX + 2);
      	}
    }
     
    f1();
    Par ailleurs dans ta "maquette" du place une condition else mais j'avoue ne pas avoir su ce que je pouvais y mettre et apparement on peut s'en passer puisque je ne m'en suis pas servi ..

    Enfin je vais être encore chient mais n'est -il pas possible simplifier le code
    car si j'utilise plusieurs autres images je vais devoir créer une fonction f3()
    dans laquelle j'appelerais la fonction f4() etc ... ça fait bcp d'imbrications ..

  8. #8
    Expert confirmé

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

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Par défaut
    Pour le var o:Object = this; a priori tu n'en as pas besoin
    Dans certains cas, on ne peut accéder à certaines variables depuis les functions "evenement" : OnEnterFrame, OnRollOver ...
    Mais ici ca marche sasn, tu accèdes à nCpt sans

    Le else, tu peux biensur t'en passer, c'est si tu avais voulu faire une action pendant que cela joue

    Sinon on peut bien sûr simplifer le 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
    var aClips:Array = Array(etoile_sud, supporter1);
    var nIndex:Number = 0;
    var nPosX = 10;
     
    taFunction();
     
    function taFunction() {
      if(nIndex != aClip.length) {
         var nObject:MovieClip = aClip[nIndex++];
         nObjet.onEnterFrame = function() {
            if(this._currentframe == this._totalframes) {
               delete this.onEnterFrame;
                f();
            }
          this._x += nPosX;
      } 
    }
    A tester

    Pas sûr d'avoir compris ton histoire de nPosX, à toi d'adapter

  9. #9
    Membre éclairé Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Par défaut
    il y a un petit souci déjà est-il normal que lorsque je tente d'afficher le contenu du tableau comme ci-dessous



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var aClips:Array = Array(etoile_sud, supporter1);
    trace(nIndex[0]);
    j'ai en sortie "undefined" ?? j'ai essayé aussi


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var aClips:Array = Array(etoile_sud, supporter1);
    trace(nIndex[1]);
    pareil ???

  10. #10
    Expert confirmé

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

    Informations forums :
    Inscription : Août 2002
    Messages : 4 376
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var aClips:Array = Array(etoile_sud, supporter1); 
    trace(nIndex[0]);
    nIndex est un nombre pas un tableau

    tu peux, si tu veux, faire :

  11. #11
    Membre éclairé Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Par défaut
    désolé j'ai fait un mauvais copié / collé j'ai écris dans mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    trace(aClip[0]);
    mais de toute façon j'avais oublié un "s" pour "aClip" à la fin !!!!! c'est la raison pour laquelle ça ne passait pas !!!


    je pense que je fatigue .... bon je poursuis

  12. #12
    Membre éclairé Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Par défaut
    par contre j'essaie de comprendre ce que fait l'instruction


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    var nObject:MovieClip = aClip[nIndex++];
    parce que lorsque je tente d'afficher le contenu de "nObject" avec la methode

    j'ai le message "undefined" [/code]

  13. #13
    Membre éclairé Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Par défaut
    bon j'ai vu ou était l'erreur par contre je ne comprends pas pourquoi la variable objet qui renvoie bien le nom de l'occurence ne passe pas

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
     
    aClips = new Array("etoile_sud", "supporter");
    //var aClips:Array = Array(etoile_sud, supporter1); 
    var nIndex:Number = 0;
    var nPosX:Number = 10;
    var frames:Number = 10;
    var nCpt:Number = 0;
    ///////////////////////////////
    function f1() {
     
    //var nObject:MovieClip = aClip[nIndex++];	
    //var Object:MovieClip = aClips[i];
    var Object = aClips[i];
    nFrames = 10;
    nPosX = this._x;
    trace(aClips[i]);
    //trace(this.Object);
     ici lorsque ça ne passe pas il me faut mettre en dur le nom de l'occurence -->Object.onEnterFrame = function() {
     
      			if(nCpt == nFrames) {
    				//trace(this);
    	  			delete this.onEnterFrame;
    				//f1();
    			}
    			trace(nCpt);
    			nCpt++;
    			this._x = this._x + (nPosX + 2);
      		}
     
    }
     
     
    //for (i=0;i <= 1;i++){
    i=0;
    f1();
    //}

    donc lorsque je fais un tace de trace(this.Object); j'obtiens bien le nom de ma première occurence mais lorque j'intègre la variable dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Object.onEnterFrame = function() {
     
    bien il semblerait que ce ne soit pas interprété
     
    pourquoi ?

  14. #14
    Membre éclairé Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Par défaut
    gna gna



    ayé j'ai finalisé ce que je voulais faire voici le code resultant ...

    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
    29
    30
    31
    32
    33
    34
    35
     
    stop();
    //aClips = new Array("etoile_sud", "supporter");
    var aClips:Array = Array("etoile_sud", "supporter"); 
    var x_final:Array = Array(10, 12); 
    var nIndex:Number = 0;
    var nPosX:Number = 10;
    var frames0:Number = 10;
    var frames1:Number = 15;
    var nCpt:Number = 0;
    var i:Number = 0;
     
    ///////////////////////////////
    function f1() {
    var nCpt:Number = 0;
    //var Object:MovieClip = aClips[i++];
    //nFrames = 10;
    nPosX = this._x;
    trace(_level0[aClips[i]]);
    _level0[aClips[i]].onEnterFrame = function() {
     
      			if(nCpt == x_final[i]) {
    	  			delete this.onEnterFrame;
    				i++;
    				f1();
    			}
     
    			nCpt++;
    			trace(this._x);
    			this._x = this._x + (nPosX + 2);
      		}
     
    }
     
    f1();
    Ce qui donne bien l'image 1 qui démarre puis une fois le compteur atteins
    c'est la seconde image qui démarre.


  15. #15
    Membre éclairé Avatar de vbcasimir
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    455
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 455
    Par défaut
    encore une petite amélioration pour que ce soit propre


    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    stop();
    //aClips = new Array("etoile_sud", "supporter");
    var aClips:Array = Array("etoile_sud", "supporter"); 
    var x_final:Array = Array(10, 12); 
    var nIndex:Number = 0;
    var nPosX:Number = 10;
    var frames0:Number = 10;
    var frames1:Number = 15;
    var nCpt:Number = 0;
    var i:Number = 0;
    var nAlpha1:Number = 100;
    var nAlpha2:Number = 0;
    ///////////////////////////////
    function f1() {
    var nCpt:Number = 0;
    //var Object:MovieClip = aClips[i++];
    //nFrames = 10;
    nPosX = this._x;
    trace(_level0[aClips[i]]);
    _level0[aClips[i]].onEnterFrame = function() {
     
      			if(nCpt == x_final[i]) {
    	  			delete this.onEnterFrame;
     
    				if (i < (aClips.length - 1)){  <-- j'ajoute une dernière condition pour que la boucle s'arrête complétement
    				i++;
    				f1();
    				}
    			}
     
    			nCpt++;
    			//trace(this._x);
    			this._alpha -= (nAlpha1 - nAlpha2)/frames0;
    			this._x = this._x + (nPosX + 2);
      		}
     
    }
     
    f1();

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

Discussions similaires

  1. [FLASH MX2004] Question new biz
    Par cpom dans le forum Flash
    Réponses: 4
    Dernier message: 11/05/2005, 22h46
  2. [FLASH MX2004] Effet sur photos
    Par themis121 dans le forum Flash
    Réponses: 5
    Dernier message: 06/05/2005, 16h52
  3. Réponses: 2
    Dernier message: 04/05/2005, 13h53
  4. [FLASH MX2004] focus sur le swf
    Par j0hnmerrick dans le forum Flash
    Réponses: 7
    Dernier message: 22/03/2005, 09h51
  5. [FLASH MX2004] Pb sur des caractères accentués.
    Par sandrineLL dans le forum Flash
    Réponses: 3
    Dernier message: 05/08/2004, 14h18

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