Rechercher : dans
Par :

Arrêt SCROLL sur boutons AS2

Dernière réponse le 15 sep 2009 à 17:25:25 Flop, le 14 sep 2009 à 16:09:31 
 Signaler ce message aux modérateurs

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.

Configuration: Windows XP
Firefox 3.5.2
Flash CS4
AS 1&2

Meilleures réponses pour « Arrêt SCROLL sur boutons AS2 » dans :
[Windows XP] Quitter / Redémarrer rapidement VoirVoici quelques astuces qui vous feront gagner du temps : 1) Quitter rapidement Explications 2) Redémarrer rapidement Explications 3) Suspendre l'arrêt rapide 1) Quitter rapidement Cliquer du bouton droit sur un endroit vide du...
Retrouver le bouton Flip 3D sous Windows 7 VoirRetrouver le bouton Flip 3D sous Windows 7 1. Créez le raccourci 2. Nommez votre raccourci 3. Associez cette icône a votre raccourci 4. Vous n'avez plus qu'à la glisser dans votre barre des tâches ! Bonjour, dans ce tutoriel je...
Forcer l'extinction de l'ordinateur VoirLe système ne veut plus donner la main pour permettre l'arrêt complet de la machine ? Il est déconseillé de débrancher violemment la prise de l'ordinateur. Pour obtenir l'arrêt complet de l'ordinateur (sur les boîtiers récents - ATX) il est...

1

zoubiock, le 14 sep 2009 à 17:09:08

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 !

Répondre à zoubiock

2

Flop, le 15 sep 2009 à 10:30:41

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.

Répondre à Flop

3

zoubiock, le 15 sep 2009 à 10:44:46

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,

Répondre à zoubiock

4

Flop, le 15 sep 2009 à 16:48:51

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.

Répondre à Flop

5

 zoubiock, le 15 sep 2009 à 17:25: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 !

Répondre à zoubiock
Collection CommentÇaMarche.net