Une balle qui rebondit des quatres côtés

Résolu/Fermé
carasmel Messages postés 15 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 29 juin 2011 - 29 juin 2011 à 13:06
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 30 juin 2011 à 03:07
Bonjour,
je voudrais realiser une balle qui rebondit de tout les côtés d'un document de 550*400 en flash actionScript 2.0. j'ai ecrit ce bout de code mais il ne marche pas correctement. la derniere etape la balle tremblote sur place. aider moi svp

onClipEvent(enterFrame){
if ((this._x<500)and(this._y>100)){
this._x+=5;
this._y-=5; }
else if ((this._x>=270)and(this._y<=100) and(this.y>=-3)){
this._x-=7;
this._y-=7; }
else if ((this._x>0)and(this._y<100)){
this._x-=15;
this._y+=10; }
else if ((this._x<200)and(this._y<400)){
this._x+=25;
this._y+=25;
}
}




5 réponses

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
29 juin 2011 à 13:30
En fait je pense qu'il y a plus simple. Supposons que tu définissent des membres _xmin, _ymin, _xmax et _ymax contenant respectivement 0, 100, 200, 400 et deux membres _dx et _dy (par exemple initialisés tout deux à 25) qui indique de combien de pixel on se décale.

xnext = this._x + this._dx;
ynext = this._y + this._dy;

if ((xnext < this._xmin) or (xnext > this._xmax)){
  this._dx = - this._dx;
}

if ((ynext < this._ymin) or (ynext > this._ymax)){
  this._dy = - this._dy;
}

this._x = xnext;
this._y = ynext;


Bonne chance
0
carasmel Messages postés 15 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 29 juin 2011
29 juin 2011 à 14:24
comment definir des membres? je viens à peine de commencer à programmer en flash stp aide moi
0
carasmel Messages postés 15 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 29 juin 2011
29 juin 2011 à 13:56
merci:) je viens d'essayer mais ma balle ne bouge plus:( ! ou je dois mettre ce code? dans l'evenement du clip meme ou juste sur le calque? ça ira? j'ai essayer tout les deux.
/* sur le calque*/
boule.onEnterFrame=function(){

_xmin=0;
_ymin=100;
_xmax=200;
_ymax=400;
_dx=25;
_dy=25;




xnext = this._x + this._dx;
ynext = this._y + this._dy;


if ((xnext < this._xmin) or (xnext > this._xmax)){
this._dx = - this._dx;
}

if ((ynext < this._ymin) or (ynext > this._ymax)){
this._dy = - this._dy;
}

this._x = xnext;
this._y = ynext;
}
/***********************/

/*sur l'evenement du clip*/

onClipEvent(EnterFrame){
_xmin=0;
_ymin=100;
_xmax=200;
_ymax=400;
_dx=25;
_dy=25;




xnext = this._x + this._dx;
ynext = this._y + this._dy;


if ((xnext < this._xmin) or (xnext > this._xmax)){
this._dx = - this._dx;
}

if ((ynext < this._ymin) or (ynext > this._ymax)){
this._dy = - this._dy;
}

this._x = xnext;
this._y = ynext;
}
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
29 juin 2011 à 14:56
Ben l'initialisation dans le constructeur et le morceau que je t'ai donné dans la fonction qui anime la balle, à la place de ton ancien code.

Mais ceci dit tu n'es pas cohérent dans ton code : un coup tu utilises _xmin (etc...) et un coup this._xmin (qui sont donc deux variables différentes a priori). Ces variables doivent être utilisées comme _x et _y, en tant que membre de classe et donc préfixées par "this.".

Voilà je ne peux pas t'en dire beaucoup plus car je ne fais pas de flash, je programme dans d'autres langages.
0
carasmel Messages postés 15 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 29 juin 2011
29 juin 2011 à 20:54
merci j'ai reussi à le faire:)
0

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

Posez votre question
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
30 juin 2011 à 03:07
Parfait, bravo :-) N'hésite pas à reporter le code ici pour les personnes qui pourraient tomber sur ce fil de discussion.
0