Petit pb de variable en as3

Résolu
cs_inaden Messages postés 618 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 27 août 2010 - 4 déc. 2008 à 17:36
cs_inaden Messages postés 618 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 27 août 2010 - 5 déc. 2008 à 14:04
Bonjour à tous

voilà j'ai le script suivant pour faire un fade alpha :

monBouton.addEventListener ( MouseEvent.CLICK, clicBouton );

function clicBouton(evt:MouseEvent):void {
    monClip.addEventListener(Event.ENTER_FRAME,baisserAlpha);
    monBouton.removeEventListener(MouseEvent.CLICK,clicBouton);
}

function baisserAlpha(evt:Object):void {
    trace("hop");
    evt.target.alpha-=.1;
    if (evt.target.alpha>0) return;
    evt.target.removeEventListener(Event.ENTER_FRAME,baisserAlpha);
}

ET ça, ça marche grâce à [auteur/CRACKTER/192563.aspx crackter]. Bref...

QUESTION 1 :
si un second bouton doit agir sur un second clip existe-t) il une autre solution que de mettre :

monBouton2.addEventListener ( MouseEvent.CLICK, clicBouton2 );


function clicBouton2(evt:MouseEvent):void {

    monClip2.addEventListener(Event.ENTER_FRAME,baisserAlpha);

    monBouton.removeEventListener(MouseEvent.CLICK,clicBouton);

}

J'ai essayé des trucs du genre :
monBouton2.addEventListener ( MouseEvent.CLICK, clicBouton,monClip2);
//avec
function clicBouton(evt:MouseEvent,cible:MovieClip):void {
    cible.addEventListener(Event.ENTER_FRAME,baisserAlpha);
    monBouton.removeEventListener(MouseEvent.CLICK,clicBouton);
}

Mais cela m'envoie proprement boulé   

QUESTION 2 :
si je ne connais pas le nom du clip sur lequel mon bouton doit agir (par exemple il doit agir sur le clip visible) comment le dire à ma fonction clicBouton ?
Je sais cela est un peu abstrait, mais je patauge bien avec l'as3.

Remerciant par avance celles et ceux qui se pencheront sur mon incompréhension...

Tout vient à qui sait attendre

7 réponses

crackter Messages postés 401 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 31 janvier 2010
4 déc. 2008 à 18:26
On ne peut pas surcharger addEventListener car la fonction est de type :

function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void

donc le 3e arguments est un type boolean.

Sinon il existerait bien 2 méthodes pour résoudre ton soucis (à ce que j'en ai compris) :

bouton2.addEventListener(MouseEvent.CLICK,clicBouton);
bouton1.addEventListener(MouseEvent.CLICK,clicBouton);
bouton2.cible = clip;
bouton1.cible = clip;
function clicBouton(evt:MouseEvent):void {
    evt.target.cible.addEventListener(Event.ENTER_FRAME,baisserAlpha);
    evt.target.removeEventListener(MouseEvent.CLICK,clicBouton);
}

ou

bouton2.addEventListener(MouseEvent.CLICK,clicBouton);
bouton1.addEventListener(MouseEvent.CLICK,clicBouton);
function clicBouton(evt:MouseEvent):void {
    switch (evt.target) {
        case (bouton1) : clip.addEventListener(Event.ENTER_FRAME,baisserAlpha);break;
        case (bouton2) : clip2.addEventListener(Event.ENTER_FRAME,baisserAlpha);break;
    }
    evt.target.removeEventListener(MouseEvent.CLICK,clicBouton);
}

Il doit y avoir d'autre moyens mais c'est les premiers qui me viennent à l'esprit :).
3
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
4 déc. 2008 à 23:57
Bonsoir,

L'utilisation d'un Tween pour baisser l'alpha serait plus judicieux (et aussi plus pratique), mais ce n'est qu'un détail de codage annexe.

Peg'
0
crackter Messages postés 401 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 31 janvier 2010
5 déc. 2008 à 01:14
Dans ce cas autant utiliser Tweener (ou simili) car Tween est un bouffe ressource ;).
Après tout dépend de la quantité d'informations à traiter.
0
cs_inaden Messages postés 618 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 27 août 2010 2
5 déc. 2008 à 08:50
Salut à vous et merci pour vos réponses,

crakter : pour ta première réponse j'ai le message d'erreur :

1119: Accès à la propriété cible peut-être non définie, via la référence de type static flash.display:SimpleButton.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_inaden Messages postés 618 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 27 août 2010 2
5 déc. 2008 à 08:54
Tiens.. il a pas pris toute ma réponse...
Donc par contre, la seconde fonctionne parfaitement. !!!  

Pour la première j'ai essayé de déclarer les clip avant, mais cela ne change rien.

Pour les Tween, je sais pas pourquoi, mais je n'aime pas trop? Je trouve que les réponses ne sont pas toujours très souples. Et puis je trouve plus sympa de chercher à faire les choses par soi-même... quand c'est possible !

De toute façon, sur une autre fonction, le problème restait entier !

Encore merci à vous de vous être penché sur le problème.

Tout vient à qui sait attendre
0
crackter Messages postés 401 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 31 janvier 2010
5 déc. 2008 à 13:37
Oui il faut adapter le code suivant ton propre source, moi je n'ai pris le cas que pour des boutons "clip".

Si tu aimes bien faire tout par toi même au niveau de l'animation, n'hésite pas à faire tes propres classes d'animation. Si tu as besoin de plus d'info à ce sujet, contacte moi par mp.
0
cs_inaden Messages postés 618 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 27 août 2010 2
5 déc. 2008 à 14:04
OK.
Je vois ce que tu veux dire.
Pour l'instant je bosse les cours que j'ai trouvé là :

http://wiki.mediabox.fr/tutoriaux/flash/pratique_as3#chapitre_1_-_qu_est_ce_que_l_actionscript_3

Cours assez complet, mais on croit comprendre et quand on est devant... sans les exemples...
En tout cas, merci pour ta proposition, je ne manquerais pas de faire appel à toi si tout est bloqué devant moi.

Tout vient à qui sait attendre
0
Rejoignez-nous