Bonsoir à vous,

J'ai commencé il y a quelques temps la programmation en AS3 et me suis intéressé à la création d'un petit shot'em up dans le genre Space Invaders.

Jusqu'à présent, j'ai un vaisseau qui bouge dans l'espace, avec un champ d'étoiles qui défile et des astéroïdes qui provoquent la fin du jeu s'ils entrent en contact avec le vaisseau au bout de la troisième fois.

Seulement, je me retrouve confronté à deux petits problèmes:

- Le premier, c'est le tir de mon vaisseau.

J'ai écrit deux fonctions permettant de déplacer les lasers que le vaisseau doit tirer. Une fonction pour les lasers gauches, et une autre pour ceux de droite, puisque le vaisseau a deux canons.
Jusqu'à présent, j'obtiens des lasers qui sortent des canons, et qui défilent vers le haut. Ceux-là sont détruit une fois sortis de l'écran.
Les lasers sortent en boucle et ceux dès le lancement de l'application. Ils ne sont pas encore gérés par le clavier, chose que je souhaiterais faire.

Voici un morceau de mon programme:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// GESTION DES LASERS ALLIES COTE GAUCHE
 
var ListeLasersGauche:Array=new Array();
var LaserGauche:Sprite=new Sprite;
stage.addChild(LaserGauche);
 
function creerLasersGauche(event:TimerEvent){
    var LaserTemporaireGauche:laser_vaisseau = new laser_vaisseau();
    LaserTemporaireGauche.y = Vaisseau.y+50;
    LaserTemporaireGauche.x = Vaisseau.x+14;
    LaserGauche.addChild(LaserTemporaireGauche);
    ListeLasersGauche.push(LaserTemporaireGauche);}
 
function deplacerLasersGauche(event:Event){
    for (var n:Number=ListeLasersGauche.length-1; n>=0; n--){
        if (ListeLasersGauche[n].y < 0){
            LaserGauche.removeChild(ListeLasersGauche[n]);
            ListeLasersGauche.splice(n,1);}
        else{
            ListeLasersGauche[n].y-=15;}}}
 
var TimerLaserGauche:Timer=new Timer(300,0);
TimerLaserGauche.addEventListener(TimerEvent.TIMER, creerLasersGauche);
TimerLaserGauche.start();
stage.addEventListener(Event.ENTER_FRAME, deplacerLasersGauche);
Je me doute qu'il ne faille pas de TimerEvent seulement voilà, je cherche depuis des heures, j'ai observé d'autres codes sources mais rien à faire, je cale.
Bien sur, le code concernant les lasers droits est identique, seules les variables changent de nom.

En espérant que vous pourriez m'accorder un petit peu de temps pour m'apporter conseil,

Je vous souhaite de bonnes fêtes,

Arkephyr.