Bonjours.
Je suis en train de débuter la réalisation d'un petit jeu type RPG ; et j'en suis encore à la phase "faire bouger le perso dans tout les sens"... .
Malheureusement, je rencontre un petit bug assez ennuyant... en l'occurrence mon héros ne se déplace que vers le haut et la gauche ( Alors que j'ai codé les autres directions... . ) OO !?
Voici le code :
Au passage, j'ai remarquée que si j'utilise ce code là, sa marche impec' !
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120 // _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ // VARIABLES // _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ var ToucheGauche:Boolean=false; var ToucheHaut:Boolean=false; var ToucheDroit:Boolean=false; var ToucheBas:Boolean=false; var ToucheEspace:Boolean=false; var vitesse_heros:Number =4; var direction_heros:Number=1; var action_heros:Number=1 var liste_action:Array=new Array("1","2","3","4") // _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ // FONCTIONS // _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ function tester_touche_appuyer(e:KeyboardEvent):void { switch (e.keyCode) { case 32: ToucheEspace=true; break; case 37: ToucheGauche=true; break; case 38: ToucheHaut=true; break; case 39: ToucheDroit=true; break; case 40: ToucheBas=true; break; Default: break; } } function tester_touche_relacher(e:KeyboardEvent):void { switch (e.keyCode) { case 32: ToucheEspace=false; break; case 37: ToucheGauche=false; break; case 38: ToucheHaut=false; break; case 39: ToucheDroit=false; break; case 40: ToucheBas=false; break; Default: break; } } function afficher_heros(x:Number,y:Number) { heros.x+=x; heros.y+=y; if (heros.currentFrame!=(direction_heros+action_heros*4)){ heros.gotoAndStop(direction_heros+action_heros*4); } } function deplacer_heros(event:Event) { if (ToucheGauche==true) { action_heros=1; direction_heros=4; afficher_heros(-vitesse_heros,0) } else { if (ToucheDroit==true) { action_heros=1; direction_heros=2; afficher_heros(-vitesse_heros,0) } else { if (ToucheHaut==true) { action_heros=1; direction_heros=1; afficher_heros(0,-vitesse_heros); } else { if (ToucheBas==true) { action_heros=1; direction_heros = 3; afficher_heros(0,-vitesse_heros); } else { if (ToucheEspace==true) { action_heros=2; afficher_heros(0,0); } else { // aucune touche pressé action_heros=0; afficher_heros(0,0) } } } } } }
Le problème étant que le livre sur lequel je me base ( ActionScript3, développez des jeux en flash, de Henri Blum. ) indique clairement que c'est une mauvaise façon de coder, car gourmande en ressource et potentiellement source d'erreur... .
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78 var ToucheGauche:Boolean=false; var ToucheHaut:Boolean=false; var ToucheDroit:Boolean=false; var ToucheBas:Boolean=false; var vitesse_heros:Number =4; // le clip se déplace de 4 pixel en 4 pixel function tester_touche_appuyer(e:KeyboardEvent):void { switch (e.keyCode) { case 37: ToucheGauche=true; break; case 38: ToucheHaut=true; break; case 39: ToucheDroit=true; break; case 40: ToucheBas=true; break; Default: break; } } function tester_touche_relacher(e:KeyboardEvent):void { switch (e.keyCode) { case 37: ToucheGauche=false; break; case 38: ToucheHaut=false; break; case 39: ToucheDroit=false; break; case 40: ToucheBas=false; break; Default: break; } } function deplacer_heros(event:Event) { if (ToucheGauche==true) { heros.x-=vitesse_heros; direction_heros = 4; } else { if (ToucheDroit==true) { heros.x+=vitesse_heros; direction_heros = 2; } else { if (ToucheHaut==true) { heros.y-=vitesse_heros; direction_heros = 1; } else { if (ToucheBas==true) { heros.y+=vitesse_heros; direction_heros = 3; } } } } heros.gotoAndStop(direction_heros); }
Alors ? A votre avis ?
Partager