Forums Développement Multimédia

Aller au contenu

This ou pas This, telle est la question ! :) ✔

CODE Actionscript

5 réponses à ce sujet

#1 diego

    Ceinture Bleue

  • Members
  • PipPipPipPipPip
  • 75 messages

Posté 15 February 2012 - 15:05 PM

Bonjour,

J'ai l'impression d'avoir un pure "bug" mais peut-être ne suis-je pas bien réveillé :)
J'ai un bouton appelé "bt1" qui, lrosque je fais un "rollout" déclenche un Tween en alpha de 100 vers 0 puis je ramène le curseur du clip vers l'étiquette "out", mais lorsque je tape ce code :

bt1.onRollOut = function () {
Alphanim = new Tween(this, "_alpha", Regular.easeOut, 100, 0, 1, true);
Alphanim.onMotionFinished = function() {
this.gotoAndStop("out");
trace ("ok");
}
}
 

ça ne marche pas, le curseur ne va pas sur "out"!!
Alors que si je remet bt1 à la place du second "this" par un simple "bt1":


bt1.onRollOut = function () {
Alphanim = new Tween(this, "_alpha", Regular.easeOut, 100, 0, 1, true);
Alphanim.onMotionFinished = function() {
bt1.gotoAndStop("out");
trace ("ok");
}
}
 

là ça marche très bien... quelqu'un saurait-il me dire pourquoi?

Merci

#2 dldler

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 4163 messages

Posté 15 February 2012 - 15:58 PM

Parce que le "this" en AS2 fait référence à celui qui le dit… si ma mémoire est bonne.
Du coup, quand tu écris ta fonction, this est ta scène principale. Celle-ci n'a pas de label "out".

Quand tu fais par contre :
bt1.gotoAndStop("out");

C'est équivalent à :

this.bt1.gotoAndStop("out");

La scène principale a bien un bouton bt1, et là, ça fonctionne.

#3 Nataly

    Community Jane

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5783 messages

Posté 15 February 2012 - 16:57 PM

En AS2, this vaut :

quand c'est un clip : le clip lui même
quand c'est un bouton : le parent du bouton


;)
Le savoir est le seul bien qui s'accroit quand on le partage
une tartine de tutos

#4 Jano 95

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 4558 messages

Posté 15 February 2012 - 18:02 PM

Salut.

Pour ce genre de problème, un simple trace(this) te permettra de savoir à quoi le this correspond.

#5 Nelchaël

  • Members
  • PipPipPipPipPipPipPipPip
  • 1900 messages

Posté 16 February 2012 - 12:46 PM

"this" est l'objet sur lequel est appelée la fonction, donc ici "Alphanim".
Exemples pour comprendre :

var ob_=new Object();
ob_.fc_=function()
        {
        trace(this+" - "+(this===ob_)+" - "+(this===ob_2));
        };
var ob_2=new Object();
ob_.fc_(); //this vaudra ob_, on aura en sortie "[object Object] - true - false"
ob_.fc_.call(ob_2); //this vaudra ob_2, on aura en sortie "[object Object] - false - true"
 
Pour ton code, une solution simple et éventuellement préférable au fait d'utiliser "bt1" (si un ciblage plus relatif est mieux approprié) :

bt1.onRollOut=function()
        {
        var bt=this;
        var Alphanim=new Tween(this,"_alpha",Regular.easeOut,100,0,1,true);
        Alphanim.onMotionFinished=function()
                {
                bt.gotoAndStop("out");
                }
        }
 

Citation

En AS2, this vaut :
...
quand c'est un bouton : le parent du bouton
Précision importante : uniquement quand le code est placé sur l'occurence du bouton (dans un "on() {...}").
nelchael.fr freelance flash CS6

#6 diego

    Ceinture Bleue

  • Members
  • PipPipPipPipPip
  • 75 messages

Posté 17 February 2012 - 16:22 PM

Merci à tous pour votre précieuse aide, tout fonctionne parfaitement maintenant !!

Encore merci.



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP