Arrêt SCROLL sur boutons AS2

Fermé
Flop - 14 sept. 2009 à 16:09
zoubiock Messages postés 57 Date d'inscription mardi 12 mai 2009 Statut Membre Dernière intervention 2 mars 2010 - 15 sept. 2009 à 17:25
Bonjour,
j'aimerai obtenir une petite aide, peut-être pourriez-vous m'aider sur ce point.

Je suis un apprenti dans le domaine de l'AS, j'apprends seul la programmation (oui, oui, ce n'est pas de la tarte!!!).

J'avais créé un menu de boutons dans une liste côté gauche de mon animation. Ce menu est fait d'environs 14 boutons, qui lorsqu'on click dessus (on.Press) on va directement sur d'autres images qui contiennent du texte.
*Pour le moment, pas de problème.

J'ai instauré un principe de défilement de haut vers bas et bas vers haut avec deux autres boutons [bt_haut; bt_bas], eux en RollOver.

*Mon problème vient ensuite...
Comme je l'avais imaginé, les boutons du menu ne s'arrêtent pas lorsqu'on utilise les boutons bt_haut et bt_bas. Ils continuent indéfiniment leur course.
(Car, comme je les ai programmé un par un, ex:
bt_haut.onRollOver = function () {
this.onEnterFrame = function () {
bt_1._y ++;
bt_2._y ++;
...
};
};
...ils ne s'arrêtent pas sur le principe du Scroll++, ils n'ont pas de limite.)

Existerait-il une solution pour que lorsque le dernier bouton 14 [bt_14], arrive sur la scène, disons à bt_14._y = 300, le défilement s'arrête?
Existe-t'il une formule pour instaurer des limites?

J'ai essayé à plusieurs reprises les formules :
if(bt_14._y =300){
bt_bas.onEnterFrame = false;
};

... et autres mais rien à faire. Au lieu de s'arrêter, il m'affiche le bouton 14 à y=300...

Bref, j'ai peur qu'il n'y est pas la formule que je souhaiterai mais si quelqu'un arrivait à trouver une solution, je lui serais très reconnaissant :-D
*Parce que là, je n'ai plus qu'une mèche à force de me les arracher...

Merci d'avance,
Cordialement,
Florent.

4 réponses

zoubiock Messages postés 57 Date d'inscription mardi 12 mai 2009 Statut Membre Dernière intervention 2 mars 2010 10
14 sept. 2009 à 17:09
Salut, une fois déclaré, le onEnterFrame s'execute en permanence, il faut donc bien que tu le désaloues:

if(bt_14._y ==300){
bt_bas.onEnterFrame = function () {}
};

Et puis attention, tu avais mis bt_14._y=300 et pas bt_14._y ==300

Voilà, j'espère que ça va te débloquer !
0
Bonjour zoubiock,

merci de m'avoir répondu.

Hélas, ça ne fonctionne pas... j'ai peur que le fait que j'ai mis :
bt_haut.onRollOver = function () {
this.onEnterFrame = function () {
/*1*/bt_1._y ++;
bt_1._y ++;
/*2*/bt_2._y ++;
bt_2._y ++;
/*3*/bt_3._y ++;
bt_3._y ++;
/*4*/bt_4._y ++;
bt_4._y ++;
};
};
Flash ne prend plus en compte la valeur y.

Par exemple, j'ai fais, comme suggéré ci-dessus, if(bt_1._y == 50){
bt_haut.onEnterFrame = false;
};
Mais, pareil. Les clips continuent de monter.
Aurais-tu une autre proposition?
Sinon, ce que je peux aussi faire, c'est déclarer que lorsque le clip bt_1 arrive dans un masque, celui-ci se stoppe, est-ce possible? (j'ai regardé les différentes propriétés comportant un masque mais rien ne correspond.)

Et, là,... c'est le drame!

Merci d'avance.
Cdlt,
Florent.
0
zoubiock Messages postés 57 Date d'inscription mardi 12 mai 2009 Statut Membre Dernière intervention 2 mars 2010 10
15 sept. 2009 à 10:44
Salut,

Tu définies la fonction onEnterFrame sur le movieClip "this" dans ta fonction bt_haut.onRollOver. Il faut savoir quel est le movieClip en question, rejoute donc la ligne:
trace(this);
juste avant de déclarer onEnterFrame.

Ensuite, si ce trace ressort bien _level0.btn_haut, tu désaloues la fonction on EnterFrame comme cela:
btn_haut.onEnterFrame = null;
A condition bien sur que btn_haut soit accessible, fais donc un trace(btn_haut) avant la ligne ci dessus et renvois moi les sorties de ces traces, stp !

Cdt,
0
t'Chious,

alors, j'ai suivi à la lettre tes instructions.
Les deux sorties des deux traces me disent la même chose:
_level0.btn_haut
_level0.btn_haut

Ce qui fonctionne, c'est lorsque j'écris (alors je ne sais pas si c'est bon) :

if(bt_1._y == 50){
trace(bt_haut);
bt_haut.onEnterFrame = null;
};

Oui, effectivement, il s'arrête lorsque bt_1 vient à 50 px mais lorsque l'on revient dessus, il continue.
Est-ce normal, sachant qu'on lui a déclaré qu'à 50 il se stoppe?

Merci de tes réponses,
Cordialement.
0
zoubiock Messages postés 57 Date d'inscription mardi 12 mai 2009 Statut Membre Dernière intervention 2 mars 2010 10
15 sept. 2009 à 17:25
Salut, et Oui bien sur !

Quand tu reviens (onOver) ton bouton, Flash réinstantie btn_haut.onEnterFrame avec la fonction qui te fait bt_1._y ++;

Donc à la frame suivante, bt_1._y vaut 51 ! Et là, ils se remet à scroller sans fin !

C'est un petit problème d'algo !

Tu peux peut-être uriliser un objet scrollPane plutôt, non ? ou mettre la condition (y >= 50) directement dans ta fonction onEnterFrame !
0