Appel de fonction en as3, variable à déclarer, mais laquelle ?
Bonjour,
j'apprends actuellement pas à pas l'actionscript 3 avec un livre.
Au point ou j'en suis, je crée un petit RPG type Zelda...
Là ou je bug depuis quelques jours :: j'ai un personnage qui se déplace avec les flèches du clavier, avec un fonction déplacer_heros ,, et qui reste au centre de l'écran grâce aux fonctions deplacer_fond_bas, deplacer_fond_gauche, etc...
Visiblement (après un trace() sous la ligne de déplacer_heros qui pose problème), le terme indéfini doit se trouver dans l'appel à la fonction déplacer_fond_bas, et les équivalentes pour chaque direction j'imagine.
Mon problème est que les variables "brique" et "première_brique" sont des String, la variable carte est un Array, et fond est un Sprite.
je suis bloqué je vous indique le message d'erreur :
TypeError: Error #1010: Un terme n'est pas défini et n'a pas de propriété.
at crowsvalley3_fla::MainTimeline/deplacer_fond_bas()[crowsvalley3_fla.MainTimeline::frame2:241]
at crowsvalley3_fla::MainTimeline/deplacer_heros()[crowsvalley3_fla.MainTimeline::frame2:136]
et les codes des deux fonctions qui bloquent, situées sur la deuxième image de mon calque (celui ou je construit les fonctions) :
Code:
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 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
| function deplacer_heros(event:Event):void {
if (ToucheGauche==true){
action_heros=1;
direction_heros=4;
afficher_heros();
if(decalage_fond_x==0){
if(tester_cases_horizontales(-1)==true){
fond.x+=vitesse_heros;
monstres.x=fond.x;
projectiles.x=fond.x;
objets.x=fond.x;
decalage_fond_x+=vitesse_heros;
if(decalage_fond_x>31){
deplacer_fond_droite();
decalage_fond_x=0;
}
}
}else{
fond.x+=vitesse_heros;
monstres.x=fond.x;
projectiles.x=fond.x;
objets.x=fond.x;
decalage_fond_x+=vitesse_heros;
if(decalage_fond_x>31){
deplacer_fond_droite();
decalage_fond_x=0;
}
}
}else{
if (ToucheDroit==true){
action_heros=1;
direction_heros=2;
afficher_heros();
if(decalage_fond_x==0){
if(tester_cases_horizontales(1)==true){
fond.x-=vitesse_heros;
monstres.x=fond.x;
projectiles.x=fond.x;
objets.x=fond.x;
decalage_fond_x-=vitesse_heros;
if(decalage_fond_x<-31){
deplacer_fond_gauche();
decalage_fond_x=0;
}
}
}else{
fond.x-=vitesse_heros;
monstres.x=fond.x;
projectiles.x=fond.x;
objets.x=fond.x;
decalage_fond_x-=vitesse_heros;
if(decalage_fond_x<-31){
deplacer_fond_gauche();
decalage_fond_x=0;
}
}
}else{
if (ToucheHaut==true){
action_heros=1;
direction_heros=1;
afficher_heros();
if(decalage_fond_y==0){
if(tester_cases_verticales(-1)==true){
fond.y+=vitesse_heros;
monstres.y=fond.y;
projectiles.y=fond.y;
objets.y=fond.y;
decalage_fond_y+=vitesse_heros;
if(decalage_fond_y>31){
deplacer_fond_bas();
decalage_fond_y=0;
}
}
}else{
fond.y+=vitesse_heros;
monstres.y=fond.y;
projectiles.y=fond.y;
objets.y=fond.y;
decalage_fond_y+=vitesse_heros;
if(decalage_fond_y>31){
//trace(deplacer_fond_bas());
deplacer_fond_bas();
decalage_fond_y=0;
}
}
}else{
if (ToucheBas==true){
action_heros=1;
direction_heros=3;
afficher_heros();
if(decalage_fond_y==0){
if(tester_cases_verticales(1)==true){
fond.y-=vitesse_heros;
monstres.y=fond.y;
projectiles.y=fond.y;
objets.y=fond.y;
decalage_fond_y-=vitesse_heros;
if(decalage_fond_y<-31){
deplacer_fond_haut();
decalage_fond_y=0;
}
}
}else{
fond.y-=vitesse_heros;
monstres.y=fond.y;
projectiles.y=fond.y;
objets.y=fond.y;
decalage_fond_y-=vitesse_heros;
if(decalage_fond_y<-31){
deplacer_fond_haut();
decalage_fond_y=0;
}
}
}else{
if (ToucheEspace==true){
action_heros=2;
afficher_heros();
interagir_heros();
}else{
if (ToucheX==true){
action_heros=3;
creer_projectile();
}else{
// aucune touche pressée
action_heros=0;
afficher_heros();
}
}
}
}
}
}
} |
et
Code:
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
| function deplacer_fond_bas (){
if (premiere_colonne==0){derniere_colonne=20;}
else {derniere_colonne=premiere_colonne-1;}
if (premiere_ligne==0){derniere_ligne=16;}
else {derniere_ligne=premiere_ligne-1;}
var colonne:Number=premiere_colonne;
var brique:String;
var premiere_brique:String;
for (var n:Number=0; n<21; n++) {
if (colonne==21){colonne=0;}
brique="brique_"+derniere_ligne+"_"+colonne;
premiere_brique="brique_"+premiere_ligne+"_"+premiere_colonne;
fond.getChildByName(brique).y=fond.getChildByName(premiere_brique).y-32;
MovieClip(fond.getChildByName(brique)).gotoAndStop(carte[(carte_ligne-1)][(carte_colonne+n)]);
colonne+=1;
}
if(premiere_ligne==0){premiere_ligne=16;}
else {premiere_ligne=premiere_ligne-1;}
carte_ligne-=1;
} |
les déplacer_fond_gauche, droite et haut sont sensiblement les mêmes...