Besoin d'aide pour score de puzzle en AS3

nbawoman Messages postés 2 Date d'inscription jeudi 25 septembre 2008 Statut Membre Dernière intervention 16 décembre 2008 - 16 déc. 2008 à 15:10
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 - 16 déc. 2008 à 22:09
Bonjour,

Je suis en train de faire un puzzle en AS3 pour mes cours. Je débute en Action Script et je rencontre un problème pour afficher le score. Malgré des recherches et des essais, je n'ai pas réussi à résoudre mon problème et je demande donc de l'aide.

J'aimerais que le score augmente à chaque fois que le joueur ne place pas une pièce au bon endroit.
Mon puzzle fonctionne avec des classes. J'ai essayé de faire le score par un TextField et de l'incrémenter, mais en vain, j'ai toujours des erreurs (1061: Appel à la méthode addChild peut-être non définie, via la référence de type static int.).
Voici la définition des variables pour le score :
        private var score:int=0;
        private var scoreText:TextField;

 Et voici le code pour le placement des pièces sur les bons trous et du score :
while (! trouve && i < listeTrous.length) {
                if (ev.target.typePiece == listeTrous[i].typeTrou) {
                    if (! listeTrous[i].occupe) {
                        xp=ev.target.x;
                        yp=ev.target.y;
                        xt=listeTrous[i].abscisse;
                        yt=listeTrous[i].ordonnee;
                        dist=Math.sqrt(xp - xt * xp - xt + yp - yt * yp - yt);
                        trace(dist);
                        if (dist < listeTrous[i].marge) {
                            ev.target.x=listeTrous[i].abscisse;
                            ev.target.y=listeTrous[i].ordonnee;

                            ev.target.removeEventListener(MouseEvent.MOUSE_DOWN,prendPiece);
                            ev.target.removeEventListener(MouseEvent.MOUSE_UP,lachePiece);

                        }
                      /*score*/
                        scoreText=new TextField  ;
                        score.addChild(scoreText);
                        scoreText.text="score : 0";
                        scoreText.text="score : " + ++score;
                    }

Merci d'avance pour votre aide.

3 réponses

pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
16 déc. 2008 à 15:30
Bonjour,

Alors, moi je lis :
private var score:int = 0;  //Définis un int, c'est à dure un chiffre entier de valeur 0
private var scoreText:TextField; //définis une zone de texte
score.addChild(scoreText);  //demande d'ajouter un objet de type "zone de texte" dans la liste d'affichage d'un "entier" ...

Or, un entier n'a pas de liste d'affichage car ce n'est pas un DisplayObject (contrairement au TextField).

Peg'
0
nbawoman Messages postés 2 Date d'inscription jeudi 25 septembre 2008 Statut Membre Dernière intervention 16 décembre 2008
16 déc. 2008 à 22:00
D'accord. Mais j'avais fais un essai avec un simple bouton qui incrémente le score quand on clique dessus. Et cela fonctionne.
var score:int;
var scoreText:TextField;
scoreText = new TextField();
stage.addChild(scoreText);
scoreText.text = "score : 0";
clicButton.addEventListener(MouseEvent.CLICK, fonctionClic );
function fonctionClic( e:MouseEvent ) {
    if (e.target==clicButton) {

        scoreText.text = "score : "+(++score);
    }
}

Il devrait y avoir aussi confrontation entre un entier et un DisplayObject, non ?
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
16 déc. 2008 à 22:09
ben relis ton code et tu verras que non ... "stage" est un displayObject, pas un entier.

Peg'
0
Rejoignez-nous