Problème de variables qui ne changent pas d'état...

Résolu
cs_grover Messages postés 3 Date d'inscription dimanche 1 juillet 2007 Statut Membre Dernière intervention 17 juillet 2007 - 17 juil. 2007 à 15:06
cs_grover Messages postés 3 Date d'inscription dimanche 1 juillet 2007 Statut Membre Dernière intervention 17 juillet 2007 - 17 juil. 2007 à 18:17
Bonjour à tous de la part du nouveau noob de service : moi.





J'ai eu beau éplucher l'aide en ligne et faire une recherche ce forum, pas
moyen de trouver la solution à mon souci.

En deux mots (enfin, un peu plus, quand même...) :





Je bricole actuellement sur flash 8 un petit jeu assez classique de pose de
pions sur un plateau. Il y a des pions de différentes couleurs qui doivent être placés aux bons
endroits pour faire apparaître un message de félicitation.





J'ai un calque de fond contenant le décor et le message de félicitations, un
calque avec les clips cibles, un calque avec les pions et un calque pour les
actions.





Le message de félicitations se masque bien au lancement du SWF, les sons
"link.mp3" et "purr.mp3" sont bien joués selon que les
pions sont correctement placés ou pas, mais mes variables ("ble1" à
"ver3") refusent obstinément de changer d'état...

Ça fait 2 jours que je m'esquinte le neurone là-dessus sans comprendre...
Quelqu'un aurait une idée pour me sortir de ce bourbier ?
<!--[if !supportLineBreakNewLine]-->

AS du
calque "actions" :


//déclarations
messageBravo._visible
= false;
var ble1:Number = 0;
var ble2:Number = 0;
var ble3:Number = 0;
var ble4:Number = 0;
var ble5:Number = 0;
var ble6:Number = 0;
var ble7:Number = 0;
var ble8:Number = 0;
var ble9:Number = 0;
var ora1:Number = 0;
var ora2:Number = 0;
var ora3:Number = 0;
var ver1:Number = 0;
var ver2:Number = 0;
var ver3:Number = 0;
var
score:Number = 0;





// test des positions

onEnterFrame = function() {
           
if ((ble1 1) && (ble2 1) && (ble3 == 1) && (ble4 == 1)
&& (ble5 1) && (ble6 1) && (ble7 == 1) &&
(ble8 1) && (ble9 1) && (ora1 == 1) && (ora2 ==
1) && (ora3 1) && (ver1 1) && (ver2 == 1)
&& (ver3 == 1)) {
                       
messageBravo._visible
= true;
           
} else {
                       
messageBravo._visible
= false;
           
}

};



























AS d'un des
pions:
















on (press)
{
           
startDrag(this);

}

on (release) {
           
stopDrag();

        //pion bien placé
           
if
(this._droptarget == "/bleue") {
                       
var
link:Sound = new Sound();
                       
link.loadSound("link.mp3",
true);
                       
link.start();
                       
ble1
= 1;
           
} else {

        //pion mal placé
                       
var
bip:Sound = new Sound();
                       
bip.loadSound("Purr.mp3",
true);
                       
bip.start();
                       
ble1 = 0;
           
}

};







Merci d'avance et bonne continuation à ce site qui est une vraie mine d'or !

4 réponses

cs_embalmer Messages postés 120 Date d'inscription mercredi 14 décembre 2005 Statut Membre Dernière intervention 10 décembre 2007
17 juil. 2007 à 17:53
Lol, je suis aveugle.
Tu as mis tes variables à la racine, ensuite au niveau de ton clip tu cherche à modifier ta variable sans précicer le chemin (_root ou this._parent),
Ca peux marcher quand tu utilise un évènement onRelease en le placant à la racine mais comme tu l'as fait ça ne marchera pas...

Par ailleurs un petit conseil, tu devrait placer tes instructions pour vérifier l'exactitude des réponses dans une fonction que tu appelerais ( par exemple) à chaque fois que tu relache un pion, ça éviterait de répéter ça inutilement dans un enterFrame .

++
3
cs_embalmer Messages postés 120 Date d'inscription mercredi 14 décembre 2005 Statut Membre Dernière intervention 10 décembre 2007
17 juil. 2007 à 16:07
Slt,

 Je ne sais pas si ça résoudra complètement ton problème mais dans la doc flash concernant la propriété droptarget  tu trouvera ceci :

Pour comparer la propriété
_droptarget
d'une occurrence à une
référence, utilisez la fonction
<code>eval()
</code> afin de convertir la valeur
renvoyée d'une syntaxe à barre oblique en référence de syntaxe à point.

Remarque : Vous devez effectuer cette conversion si vous
utilisez ActionScript 2.0 car celui-ci ne prend pas en charge la syntaxe à barre
oblique.

++
0
cs_grover Messages postés 3 Date d'inscription dimanche 1 juillet 2007 Statut Membre Dernière intervention 17 juillet 2007
17 juil. 2007 à 17:14
Avant toute chose, merci de ta réponse.

A priori, le droptarget semble bien marcher tel qu'il est, vu que le son "link" n'est joué que si le pion est sur la bonne case, donc les lignes :



var link:Sound = new Sound();
                       


link.loadSound("link.mp3", true);
                       


link.start();

Sont bien éxécutées.

Par contre, la ligne :






                       





ble1 = 1;

ne semble pas s'éxécuter, ou alors il y a un truc ailleurs qui empêche le changement de 0 à 1.

Bref, je patauge toujours autant...
0
cs_grover Messages postés 3 Date d'inscription dimanche 1 juillet 2007 Statut Membre Dernière intervention 17 juillet 2007
17 juil. 2007 à 18:17
Impeccable !!!
Ça marche en ajoutant _root. devant mes variable.

Merci, M'sieur !
0
Rejoignez-nous