Arrêt movieclip

Résolu
marcod59 Messages postés 170 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 13 juin 2010 - 24 févr. 2007 à 20:40
marcod59 Messages postés 170 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 13 juin 2010 - 25 févr. 2007 à 16:16
Bonjour,

Je suis complètement novice dans l'action script, et pour comprendre un peu ce langage j'ai pris un tuto sur un jeu de tir au canard, qui doit être connu sur ce site. J'essai d'apporter des modifications dans ce script afin de comprendre comment ça marche, mais je reste bloqué sur quelque chose, qui j'en suis sur doit être simple pour quelqu'un qui connait. Voici le code :

/* La classe hérite des propriété d'un clip car notre canard est un objet de la bibliothèque */
daffy.prototype = new MovieClip();
/* Initialisation d'un canard */
function daffy() {
 this.mort = false;
 // Un canard est vivant par défaut
 this.crash = false;
 // Un canard vol par défaut
 this.vitesse = Math.random()*5+3;
 // La vitesse est aléatoire
 this.sens = int(Math.random());
 // sens aléatoire également (ici sens = 0 ou -1)
 if (this.sens == 0) {
  this.sens = -1;
 }
 // fait en sorte que sens soit -1 ou 1 uniquement.
 this._xscale = this._yscale=Math.random()*40+20;
 // Donne une grosseur aléatoire aux canards
 this._x = Math.random()*900-50;
 // donne une position aléatoire aux canards
 this._y = Math.random()*150+40;
 this._xscale = this._xscale*-this.sens;
 // le canard est dirigé vers le sens ou il va
}
/* Liaison de notre classe avec l'objet de la bibliothèque */
Object.registerClass("canard", daffy);
/* Création d'un canard à l'écran */
var niveau:Number = 1;
// "Calques Action Script" où sera placé le prochain canard
var total:Number = 0;
// Combien y a t-il de canards affichés
/* Affiche le canard */
function nouveau_canard() {
 if (score == 5) {
  son3.stop();
  gotoAndStop(403);
 }
 if (total<5) {
  _root.attachMovie("canard", "mon_canard", niveau);
  son1.start();
  niveau++;
  total++;
 }
}
nouveau_canard();
setInterval(nouveau_canard, 700);
//daffy.prototype.onEnterFrame = function() {
 // ici code pour faire avancer le canard
//};
daffy.prototype.onEnterFrame = function() {
 if (not this.crash) {
  // Si le canard n'est pas au sol
  this._x = this._x+this.vitesse*this.sens;
  // Déplace le canard horizontalement
  // Si le canard est sortit de l'écran :
  if (((this._x-this._width>800) or (this._x+this._width<0)) and not this.mort) {
   this.sens = -this.sens;
   // On change son sens
   this._xscale = -this._xscale;
   // On inverse horizontalement l'image
  }
  if (this.mort) {
   // S'il a été touché, il faut qu'il tombe
   this._y = this._y+1+(this._rotation*this.sens)/4;
   // Fait descendre le canard
   if (this._rotation<30) {
    this._rotation += this.sens;
   }
   // Fait tourner l'image du canard
   if (this._y>450) {
    this.crash = true;
   }
   // S'il touche terre : il est crashé
  }
 } else {
  // Le canard est par terre
  this._alpha--;
  // On réduit sa transparence
  if (this._alpha<0) {
   // S'il n'est plus visible
   total--;
   // On le retire du total des canard affichés
   this.removeMovieClip();
   // On le retire de la scène
  }
 }
};
/* Action quand on clique dessus */
daffy.prototype.onPress = function() {
 this.mort = true;
 score = score+1;
 // Change l'état du canard
 this.gotoAndStop(10);
 // Change l'image du canard
};
var son = new Sound();
son.attachSound("duck.mp3");
son.setVolume(60);
// volume en pourcentage
son.stop();
// arrête la lecture du son
son.start();
// démarre la lecture du son
var son3 = new Sound();
son3.attachSound("zikette.mp3");
// attend d'avoir chargé la musique complètement
son3.start(0, 5);
// ligne que vous pouvez commenter ensuite :)
son3.setVolume(80);
// variables des sons
son1 = new Sound();
son2 = new Sound();
// Charge les fichiers
son1.attachSound("duck.mp3");
son2.attachSound("gunfire.mp3");
// définit les volumes
son1.setVolume(60);
son2.setVolume(100);
fusil.onMouseMove = function() {
 var mx = souris._x-fusil._x;
 // calcul d'angle (trigo de 5eme ;)
 var my = souris._y-fusil._y;
 var angle = -Math.atan(mx/my)*180/Math.PI;
 if (angle<-40) {
  angle = -40;
 }
 // limite l'orientation du fusil
 if (angle>40) {
  angle = 40;
 }
 fusil._rotation = angle;
 // definit l'orientation
};

Dans le code j'ai mis en rouge ce que j'ai ajouté. Je compte combien de canard on été touché, et lorsque j'ai le compte que je veux je vais sur une autre image. Mon problème est que je change bien d'image, mais je garde les canards qui volent. Comment les faire disparaître ?

Merci d'avance pour vos réponse
@+++

marcod59

2 réponses

Darkrats Messages postés 212 Date d'inscription mardi 2 novembre 2004 Statut Membre Dernière intervention 12 mai 2008 1
25 févr. 2007 à 12:27
Salut,

je n'ai pas lu tout ton code mais pour pouvoir effacer des clips créés via la fonction "attachMovie" tu dois utliser la fonction "removeMovieClip"
Dans le code, tu as juste après ton code ajouté :
    if (total<5) {
          _root.attachMovie("canard", "mon_canard", niveau);
          son1.start();
          niveau++;
          total++;
    }
Tu crées donc dynamiquement (et c'est logique vu ton style de jeu) les canards.
Pour supprimer le canard, tu dois faire ceci :
    mon_canard.removeMovieClip();

--------- Darkrats ---------
la loi est dure mais c'est la loi
 -------- Infograpix --------
3
marcod59 Messages postés 170 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 13 juin 2010
25 févr. 2007 à 16:16
Salut,

Pour commencer, merci pour ta réponse qui fonctionne très bien. J'avoue que je suis un peu perdu dans la façon de programmer. J'ai des bases de VB, et j'ai un peu de mal avec actionscript car j'apprend au fur et à mesure avec des exemples pris ici et là.

Merci encore et bpnne prog
@+++
marcod59
0
Rejoignez-nous