Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Flash] Gestion du tir d'un vaisseau

Sujet résolu
    18 novembre 2006 à 0:14:20

    Bonsoir à tous!

    Pour un mini-jeu j'essais de faire tirer un vaisseau, mais je m'embrouille dans le code est au final le laser apparaît quand je laisse la touche espace (touche de tir) appuyée, et il ne se déplace que quand je la relâche, vers le bas alors qu'il devrait aller vers le haut, et en plus il suit le positionnement en x du vaisseau ><.

    Voici la partie du code concernée :

    var f:Number = 0;
    var com_v:Array = new Array(Key.LEFT, Key.RIGHT, Key.UP, Key.DOWN, Key.SPACE);
    if(Key.isDown(com_v[4])){
        tir = _root.vaisseau.attachMovie('tir', 'tir'+f, _root.getNextHighestDepth());
        //Positionnement du tir
        tir2 = _root.vaisseau['tir'+f];
        tir2._x = _root.vaisseau._x;
        tir2._y = _root.vaisseau._y;
        //Déplacement du tir
        tir2.onEnterFrame = function(){
            this._y += 20;
            if(this._y > 400){
                this.removeMovieClip();
            }
        }
    f++;
    }


    Quel est le problème avec ce code? Comment faire pour que le tir parte vers le haut, qu'à chaque pression sur espace un nouveau tir soit lancé, et que tous les tirs ne suivent pas la position en abscisse du vaisseau s'il vous plaît?
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      18 novembre 2006 à 6:45:19

      Bon c'est aseez, meme tres laid mais le principale y est;
      http://naniketpicpic.free.fr/tirer.html

      Le probleme doit venir de ta vaiable f
      ajoute un
      trace(f);

      apres ton f++ mais elle ne doit pas s'incrementer je sais pas ou tu a placé ton code; pour l'exemple que je t'es donné, je l'ai mis dans le MC vaisseau
      et ca donne ca

      onClipEvent (load) {
              var f = 0;
      }
      onClipEvent (enterFrame) {
              var com_v:Array = new Array(Key.LEFT, Key.RIGHT, Key.UP, Key.DOWN, Key.SPACE);
              if (Key.isDown(com_v[0])) {
                      this._x -= 10;
              }
              if (Key.isDown(com_v[1])) {
                      this._x += 10;
              }
              if (Key.isDown(com_v[2])) {
                      this._y -= 10;
              }
              if (Key.isDown(com_v[3])) {
                      this._y += 10;
              }
              if (Key.isDown(com_v[4])) {
                      tir2 = _root.attachMovie("munition", "munition"+f, _root.getNextHighestDepth());
                      _root["munition"+f]._x = this._x;
                      _root["munition"+f]._y = this._y;
                      tir2.onEnterFrame = function() {
                              this._y -= 10;
                      };
                      f += 1;
              }
      }


      • Partager sur Facebook
      • Partager sur Twitter
        18 novembre 2006 à 7:06:43

        Il n'est pas beau mon code? Nah ne l'écoute pas mon petit code, le monsieur dit des bêtises.

        Plus sérieusement... par pas beau qu'est-ce que tu entends, qu'est-ce que je pourrais améliorer? J'en suis à mes débuts donc il me reste un loooooooooong chemin à parcourir!

        Je verrai tout à l'heure pour ce que tu as dit parceque là pas trop le temps, mais je pense que le problème vient du faît que le tir est créé dans le clip du vaisseau et non pas, comme le vaisseau, sur la scène principale.

        Le onClipEvent renvoit donc dans ton code au clip du vaisseau?
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          18 novembre 2006 à 7:55:37

          mais non il est beau ton code :D c'est mon vaisseau qui est laid :lol:
          (mais j'ai mis du rouge pour les munitions keu meme).
          Plus serieusement tous tes attachMovie doit avoir le meme nom a savoir "munition0". et c'est le probleme.
          comme je t'ai dit ta variable f ne s'increment pas si
          var f:Number = 0;

          se trouve dans onClipEvent(enterFrame) elle est remise a zero tout le temps c'est pourquoi je l'ai mis dans onClipEvent(load) comme ca elle est initialisé a zero pendant le chargement du jeu.

          quand tu rentre ton code dans la scene principale directement sur ton calque; tu utilise onEnterFrame=function();
          mais quand tu cose sur une occurence (ici vaisseau) tu utilise onClipEvent

          • Partager sur Facebook
          • Partager sur Twitter
            18 novembre 2006 à 11:38:33

            Ca fonctionne maintenant merci beaucoup!
            • Partager sur Facebook
            • Partager sur Twitter

            [Flash] Gestion du tir d'un vaisseau

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown