Je commence tout juste dans le domaine. Mon premier objectif est de faire rebondir une balle avec cette commade: if (ball.y > 350). J'ai remarqué que si j'entre une valeur inférieure à 350 la balle rebondit et si je tape une valeur supérieur à 349 la balle ne rebondit pas. Pouvez-vous m'expliquer le "truk" afin que je puisse mieux comprendre le programme. Merci de votre aide.
Voici mon prgm:
package {
import flash.display.Sprite;
import flash.events.Event;
public class BouncingBall extends Sprite {
//définition des variables
private var g:Number=0.1; // acceleration due to gravity
private var vx:Number=2; // initial horizontal speed
private var vy:Number=0; // initial vertical speed
private var ball:Ball;
//[SWF(width="440",height="400",backgroundColor="#000000",frameRate="30")]
public function BouncingBall() {
init();
}
private function init():void {
ball = new Ball(30,0xFF0000); //ball (variable définie plus haut) de rayon 30 pixel et de couleur rouge
//posi° initiale de la ball
ball.x = 50;
ball.y = 50;
addChild(ball);//affiche l'objet sur la scène
addEventListener(Event.ENTER_FRAME,NG); //écoute les évènements: ici j'ai remplacé "onEachTimestep" par NG
}
private function NG(evt:Event):void{
vy += g; // gravity increases the vertical speed //vy += g (ou vy = vy + g)
//g représente l'augmentation de vitesse suivant y pendant l'intervalle de temps correspondant à la durée d'une image dc par unité d'image ou de temps , on incrémente la vitesse suivant y, c'est une chute libre!
ball.x += vx; // horizontal speed increases horizontal position
ball.y += vy; // vertical speed increases vertical position
if (ball.y > 350) { // if ball hits the ground //si la balle à une ordonnée (hauteur de l'animation) supérieur à 350 alors la balle va rebondir
vy *= -0.8; // its vertical velocity reverses and reduces
// -0,8 est inférieur à -1 c'est dc un amortissement
//le signe négatif signifie que l'on change de sens
//vy *= -0,8 (ou vy = vy * (-0,8))
}
}
}
}
import flash.display.Sprite;
import flash.events.Event;
public class BouncingBall extends Sprite {
//définition des variables
private var g:Number=0.1; // acceleration due to gravity
private var vx:Number=2; // initial horizontal speed
private var vy:Number=0; // initial vertical speed
private var ball:Ball;
//[SWF(width="440",height="400",backgroundColor="#000000",frameRate="30")]
public function BouncingBall() {
init();
}
private function init():void {
ball = new Ball(30,0xFF0000); //ball (variable définie plus haut) de rayon 30 pixel et de couleur rouge
//posi° initiale de la ball
ball.x = 50;
ball.y = 50;
addChild(ball);//affiche l'objet sur la scène
addEventListener(Event.ENTER_FRAME,NG); //écoute les évènements: ici j'ai remplacé "onEachTimestep" par NG
}
private function NG(evt:Event):void{
vy += g; // gravity increases the vertical speed //vy += g (ou vy = vy + g)
//g représente l'augmentation de vitesse suivant y pendant l'intervalle de temps correspondant à la durée d'une image dc par unité d'image ou de temps , on incrémente la vitesse suivant y, c'est une chute libre!
ball.x += vx; // horizontal speed increases horizontal position
ball.y += vy; // vertical speed increases vertical position
if (ball.y > 350) { // if ball hits the ground //si la balle à une ordonnée (hauteur de l'animation) supérieur à 350 alors la balle va rebondir
vy *= -0.8; // its vertical velocity reverses and reduces
// -0,8 est inférieur à -1 c'est dc un amortissement
//le signe négatif signifie que l'on change de sens
//vy *= -0,8 (ou vy = vy * (-0,8))
}
}
}
}