Déplacement d'un personnage animé avec l'action script v2 (flash mx & mx2004)

Soyez le premier à donner votre avis sur cette source.

Vue 20 998 fois - Téléchargée 2 330 fois

Description

C'est pas le code définitif mais ca commence a se mettre en place. Ne soyez pas trop dur avec moi je suis encor qu'un débutant ^^
Bref cette animation nous montre qu'on peut facilement bouger un personnage avec les fléches du clavier. Le bug a été a moitié corrigé, lorsqu'on appuie sur les deux touches en meme temps, une seule répond.
Tout le code se trouve sur l'image 1.

Source / Exemple :


// on defini ici deux variables qui nous serviront par la suite
vard = false;
varg = false;
// on implante un ecouteur de key
ecouteur = new Object();
// cet ecouteur sert a replacé l'occurence quand une touche est relaché
ecouteur.onKeyUp = function() {
	// prendre le code de la touche
	laTouche = Key.getCode();
	//si le code de la touche = 39 ou 37 (droite ou gauche)
	if (laTouche == 39 || laTouche == 37) {
		//l'occurence valki va stopper sur l'image "repo"
		_root.valki.gotoAndStop("repo");
		// la variable vard et varg = false
		_root.vard = false;
		_root.varg = false;
	}
	//si le code de la touche = 37 (gauche)
};
Key.addListener(ecouteur);
// les instructions qui suivent seront éffectués 12 fois par secondes (onEnterFrame)
valki.onEnterFrame = function() {
	// si la touche enfoncé est RIGHT
	if (Key.isDown(Key.RIGHT)) {
		// et si la variable varg = 0 
		if (_root.varg == 0) {
			// le clip se tourne vers la droite
			this._xscale = 100;
			//l'occurence valki va jouer a partir de l'image "cour"
			this.gotoAndPlay("cour");
			// la variable varg est egale a 1 (si on n'utilise pas cette variable, l'occurence se met 12 fois par secondes sur l'image "cour" l'animation est donc impossible. Ici cette action (depuis if (Key.isDown(Key.RIGHT))n'est utilisé qu'une seule fois
			_root.varg++;
		}
		// la position vertical de l'occurence est augmenté de 15 pixel, 12 fois par secondes
		this._x += 15;
	} else {
		if (Key.isDown(Key.LEFT)) {
			// et si la variable vard = 0
			if (_root.vard == 0) {
				// le clip se tourne vers la gauche
				this._xscale = -100;
				//l'occurence valki va jouer a partir de l'image "cour"
				this.gotoAndPlay("cour");
				// la variable vard est egale a 1
				_root.vard++;
			}
			// la position vertical de l'occurence est diminué de 15 pixel, 12 fois par secondes
			this._x -= 15;
		}
	}
};

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Prouprou_Sensei
Messages postés
517
Date d'inscription
mardi 23 décembre 2003
Statut
Membre
Dernière intervention
24 octobre 2006

Salut Zakata.

Alors attention, j'ai ecrit cette source quand j'aprennais a coder, et je te conseil d'utiliser plutot des tuto ou meme mieux des bouquins pour apprendre. Cela etant dis, je peut t'expliquer ce que tu ne comprends pas.

Key.addListener(ecouteur) permet d'enregistrer l'ecouteur en tant que tel sur l'objet Key. Ainsi, les evenements du clavier (utilisateur appuyant sur une touche ou la relachant) sont envoyé a l'ecouteur. On a definit la methode onKeyUp, le code contenu dans cette methode sera executé lorsque l'on relache une touche.

valki.onEnterFrame = function() : onEnterFrame est une methode de la classe movieClip qui permet d'executer du code a chaque frame (en fonction de l'animation donc)

Et effectivement j'aurais pu mettre :

# valki.onEnterFrame = function() {
# if (Key.isDown(Key.RIGHT)) {
# if (_root.varg == 0) {
# [...]
# }
# this._x += 15;
# } else if (Key.isDown(Key.LEFT)) {
# if (_root.vard == 0) {
# [...]
# }
# this._x -= 15;
# }
# }
# };

Mais le else reste necessaire pour eviter l'appui des deux touches en meme temps, et le test de la condition aussi (if).

Bonne continuation !
Zakata
Messages postés
59
Date d'inscription
lundi 21 août 2006
Statut
Membre
Dernière intervention
17 juillet 2009

Salut à tous,

J'aime beaucoup ta source, je suis débutant en actionSript et j'aurais quelques questions:

je ne comprend pas l'utilité de ces deux lignes:

1)- Key.addListener(ecouteur);
et
2)- valki.onEnterFrame = function()

et oui je début vraiment ;)...
Pour la ligne 2), j'imagine que c'est une fonction qui s'éxécute mais je ne la comprend pas très bien.

J'ai aussi une remarque à faire:

j'ai l'impréssion que le else de la ligne 36 (sur le code ci-dessus)ne sert à rien. En gros tu fait:

# valki.onEnterFrame = function() {
# if (Key.isDown(Key.RIGHT)) {
# if (_root.varg == 0) {
# [...]
# }
# this._x += 15;
# } else {
# if (Key.isDown(Key.LEFT)) {
# if (_root.vard == 0) {
# [...]
# }
# this._x -= 15;
# }
# }
# };

C'est bizard de faire else et aprés if (Key.isDown(Key.LEFT)), car finalement le else sous entend le if (Key.isDown(Key.LEFT)) ?
Enfin peut être que je n'ai rien compris.

J'ai essayé de le suprimmer et ton code fonctionne très bien sans.

Voila a plus et encore merci d'avoir partagé ta source, elle répond exactement aux questions que je me posais.

Bonne journée.
Damien.
Stan62970
Messages postés
48
Date d'inscription
mercredi 26 mai 2004
Statut
Membre
Dernière intervention
20 septembre 2006

salut
où trouve tu le graphisme des perso ?????
benjaoul
Messages postés
19
Date d'inscription
mercredi 17 septembre 2003
Statut
Membre
Dernière intervention
9 août 2004

:D Bien l'anim. C'est carrément un jeu que tu vx faire, non ?
Sinon, ce serait cool que tu rajoutes le scrolling sur la source ; mon niveau de débutant ne me permettrait pas d'y parvenir :( lol
merci
T'cha
Prouprou_Sensei
Messages postés
517
Date d'inscription
mardi 23 décembre 2003
Statut
Membre
Dernière intervention
24 octobre 2006

PS2: allez voir sur http://cochire.free.fr/flashmo/valkyrie.html
...http://cochire.free.fr/flashmo/valkyrie.html...
c'est l'animation en entiere, c'est lourd (en taille) et c loin d'etre fini mais vous pouvez toujours jeter un coup d'oeil ^^
Tchao !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.