marcod59
Messages postés170Date d'inscriptionvendredi 16 janvier 2004StatutMembreDernière intervention13 juin 2010
-
24 févr. 2007 à 20:40
marcod59
Messages postés170Date d'inscriptionvendredi 16 janvier 2004StatutMembreDernière intervention13 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 ?
Darkrats
Messages postés212Date d'inscriptionmardi 2 novembre 2004StatutMembreDernière intervention12 mai 20081 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 --------
marcod59
Messages postés170Date d'inscriptionvendredi 16 janvier 2004StatutMembreDernière intervention13 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à.