IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flash Discussion :

ARGH : Toutes les variables de mes objets ont même valeur


Sujet :

Flash

  1. #1
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 766
    Points : 1 267
    Points
    1 267
    Par défaut ARGH : Toutes les variables de mes objets ont même valeur
    Bonjour,
    Je suis prof d'info au lycée de Boston, et je me suis lancé dans la folle aventure de créer des jeux Flash avec mes élèves.
    Venant du Java, je suis un peu déboussolé :

    J'ai des surfs ou des feuilles qui tombent du ciel avec une , et j'ai une Barre style arkanoïd qui doit récupérer les surfs ou les feuilles (c'est issu du cerveau des élèves.

    Malheureusement, à chaque fois que je crée un nouvel objet Surf, tous les objets de la Classe ont la même valeur _y ou _x et se superpose.
    Voici mon code dans Surf.as :


    class Surf extends MovieClip {

    var
    maBarre;
    var
    monScore;
    var
    hasBeenHit;

    function
    Surf() {
    /* Initialisation à la création du Surf : this représente l'objet créé */
    this._x=Math.random()*400;
    this._y=0;
    hasBeenHit=false;
    }

    function
    setBarre(barre)
    {
    maBarre=barre;
    }




    function
    onEnterFrame() {

    _y+=5;

    /* Ce qui se passe quand le surf touche l'objet */
    if ( this.maBarre.hitTest(this) && (this.hasBeenHit==false) ){
    this.hasBeenHit==true;//Comme ca, il ne se passera rien au prochain choc.
    _root.nombre+=1;
    _root.score.text=_root.nombre;
    }//Fin du if.

    }// Fin de la Fonction onEnterFrame



    }//Fin de la Classe

    Et voici ce qui se passe dans le .fla :

    _root.onEnterFrame=function(){

    /* Création des surfs -- rappel : 14%10=4 : C'est le reste de la division euclidienne */
    if (_root._currentframe%10==0 && _root._currentframe<84){
    _root.nombreSurf+=1;
    nom="surf"+_root.nombreSurf;
    valeurXinitiale=Math.random()*400;

    /* On crée l'objet */
    var ref=_root.attachMovie("Surf",nom , 0);
    ref.setBarre(maBarre);
    }

    }

    Or je voudrais que chaque objet Surf ait bien SES PROPRES valeurs. Merci de votre aide !
    Nicolas

  2. #2
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    Bonjour,

    Tout d'abord, je reproche plusieur choses à la class surf:
    1. le typage fort n'est pas utilisé( pour comprendre la source c'est moins facile, et cela aurrai permis de debuger plus facilement)
    2. L'encapsulation n'est pas utilisé.
    3. Il n'y a pas de regle definie pour l'écriture.
    4. Les commentaires n'explique pas ( ou tres peu ) ce que la class fait concretement.
    5. Le ciblage absolut est utilisez.
    6. Il y a des erreurs de syntaxe.


    Pour ce qui es de votre question, Il semble tres probable que le probleme vienne de cete ligne dans la class Surf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    this._x=Math.random()*400;
    trace(this._x);// Ca aide. Dite nous ce qu'il en retourne
    Peut etre qu'en modifiant le code ainssi, ca resoudrai le probleme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    valeurXinitiale=Math.random()*400;
     
    /* On crée l'objet */
    var ref=_root.attachMovie("Surf",nom , 0); 
    ref._x=valeurXinitiale;

  3. #3
    Membre éprouvé
    Avatar de thecaptain
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2003
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Décembre 2003
    Messages : 919
    Points : 1 210
    Points
    1 210
    Par défaut
    Salut,

    Citation Envoyé par CR_Gio
    Tout d'abord, je reproche plusieur choses à la class surf:
    1. le typage fort n'est pas utilisé( pour comprendre la source c'est moins facile, et cela aurrai permis de debuger plus facilement)
    2. L'encapsulation n'est pas utilisé.
    3. Il n'y a pas de regle definie pour l'écriture.
    4. Les commentaires n'explique pas ( ou tres peu ) ce que la class fait concretement.
    5. Le ciblage absolut est utilisez.
    6. Il y a des erreurs de syntaxe.
    Yes et j'ajoute à cela que l'utilisation du mot-clé _root est déconseillé ainsi que l'omission des mot-clé d'accès à une méthode (public, private). Au passage le problème vient simplement du fait que les 3 variables maVar, monScore et HasBeenHit ne sont pas initialisée dans le constructeur et sont donc considérées comme étant statiques

    @++
    Libzippp (C++)
    Lost in AStorm

  4. #4
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 766
    Points : 1 267
    Points
    1 267
    Par défaut
    Hého, c'est du code pour élèves de 15 ans quand même

  5. #5
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 766
    Points : 1 267
    Points
    1 267
    Par défaut
    Ceci dit, j'ai la réponse : Il fallait mettre tous les surfs dans un niveau de Depth différent quand j'utilise attachMovie.

    L'histoire des variables static quand ce n'est pas initialisé me semble néanmoins fondamentale. On n'a pas ça en Java, et je ne comprend pas trop pourquoi ces variables seraien tun jour tatic, un jour non selon le code du constructeur. C'est louche mais peut causer des droles de choses pour un débutant en actionScript comme moi !!!

  6. #6
    Membre éprouvé
    Avatar de thecaptain
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2003
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Décembre 2003
    Messages : 919
    Points : 1 210
    Points
    1 210
    Par défaut
    re,

    Citation Envoyé par nicorama
    L'histoire des variables static quand ce n'est pas initialisé me semble néanmoins fondamentale. On n'a pas ça en Java, et je ne comprend pas trop pourquoi ces variables seraien tun jour tatic, un jour non selon le code du constructeur. C'est louche mais peut causer des droles de choses pour un débutant en actionScript comme moi !!!
    hé oui, c'est une particularité (débile certes) de l'AS2. Ceci a été corrigé en AS3

    Hého, c'est du code pour élèves de 15 ans quand même
    ca n'excuse rien

    @++
    Libzippp (C++)
    Lost in AStorm

  7. #7
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 766
    Points : 1 267
    Points
    1 267
    Par défaut
    Ya pas, le Java c'est la vie !
    Merci pour vos zaides précieuses !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 24/06/2009, 22h43
  2. Récupérer toutes les variables commençant pareil
    Par Leobaillard dans le forum Langage
    Réponses: 3
    Dernier message: 14/06/2006, 15h14
  3. Réponses: 11
    Dernier message: 04/05/2006, 11h50
  4. Classe, typer les variables d'un objet.
    Par Choupi dans le forum Général Python
    Réponses: 3
    Dernier message: 20/04/2006, 18h15
  5. [FLASH 8] Toutes les variables
    Par Destiny dans le forum Flash
    Réponses: 2
    Dernier message: 08/03/2006, 16h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo