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

ActionScript 3 Discussion :

Modifier une variable depuis un child


Sujet :

ActionScript 3

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 6
    Par défaut Modifier une variable depuis un child
    Bonjour à tous.

    Voilà j'explique rapidemment ce qui coince : En gros dans mon jeu des missiles viennent s'écraser sur votre base, et votre but est de les intercepter. Votre base possède un bouclier et c'est là que ca bloque.

    Lorsque le missile touche le bouclier, il disparait. D'ailleurs à ce propos, j'ai utilisé l'équation du cercle mais il me semble bien qu'il y a une fonction pour les collisions.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    		  if ((this.x - 350) * (this.x - 350) + (this.y - 500) * (this.y - 500) <= 16384)
    		  {
    			  this.removeEventListener(Event.ENTER_FRAME, ChildPosition);
    			  this.parent.removeChild(this);			  
    		  }
    Voici donc la portion de code provenant du Child, c'est à dire les missiles ennemis qui spawn automatiquement. Celle-ci implique de delete le missile lorsqu'il touche le bouclier. Mon but est de faire en sorte que le bouclier perde de la vie, mais je n'arrive pas à faire venir la valeur depuis le Main et de modifier son Alpha.

    La valeur du shield qui est affiché dans la barre de vie s'apelle "Shield"
    Celle du alpha est "ForceField" et donc pour le alpha "ForceField.alpha"

    J'ai esseyé des choses comme "root.Shield -= 10" ou "parent.Shield -= 10" mais ca ne marche pas. J'ai également esseyé beaucoup de choses vues sur les forums...

    Je précise également que mon code principale est située sur la Timeline du fichier principal et non dans un fichier séparé. Seuls les Child (missile que notre base tire sur un fichier et les missiles ennemis sur un autres) sont séparés.

    Merci d'avance !

  2. #2
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2012
    Messages : 4
    Par défaut
    Bonjour.

    Je ne suis pas sûre d'avoir compris tout ton problème mais j'essaie ^^°
    La question est-elle comment faire disparaître le missile ?
    Ou juste comment faire venir la valeur de la vie de ton Main ?
    Est-ce que cette portion de code du Child est dans un fichier .as ?

    C'est quoi la valeur de la variable de vie de ton Main ? Le Shield ?
    As-tu essayé quelque chose comme de mettre dans ton child :

    dans ta classe :
    public (ou private au choix) var Shield:uint = MovieClip(root).Shield; (ce qui implique que tu mettes dans ton root "var Shield:uint = valeurdeshield;" )

    et au moment où tu enlèves la vie : "Shield -=10".
    idem pour le alpha.

    Parce qu'en fait tu dois, dans ton child, si tu l'as fait dans une classe externe .as, réinstancier ta variable par un var blabla = blabla et c'est à ce moment là que tu importes ta valeur .

    J'espère avoir pu t'aider et ne pas avoir mal compris la question .

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 6
    Par défaut
    La question est bien d'importer et de modifier la valeur du bouclier du fichier principal dans un fichier annexe, en l’occurrence les missiles ennemis.

    La variable de la vie est "Shield"

    J'ai esseyé "Shield:uint = MovieClip(root).Shield;". Mais ca ne fonctionne pas.

    Merci de ta réponse en tout cas.

  4. #4
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2012
    Messages : 4
    Par défaut
    Tu as essayé Shield:uint = MovieClip(root).Shield;
    mais tu as bien mis le "var" devant ? ( var Shield:uint = MovieClip(root).Shield;

    essaie sans le :uint ?
    Comment est définie ta variable Shield dans le root ?

    en gros dans ton root tu dois avoir ça quelque part :

    var Shield = valeurdeShield; (avec ou sans précision après Shield sur la nature de cette variable genre "var Shield:uint" ou "var Shield:Number" etc..)

    dans ton child:

    private var Shield = MovieClip(root).Shield;

    sauf si ta var "shield" de base n'est pas dans un movieClip en racine mais dans un autre fichier de classe. Envoie moi le code par Mp au pire.
    (j'ai appris à importer des valeurs d'une classe vers l'autre hier alors c'est encore tout frais )

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 6
    Par défaut
    Dans mon Main, il est indiqué comme ceci :

    var MaxShield:int = 100;
    var Shield:Number = MaxShield;
    J'ai esseyé evidemment avec uint et en mettant 100 à la place de MaxShield (que j'utilise pour des raisons évidemment), rien y fait.

    Dans mon fichier séparé, je l'apelle via

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var Shield:Number = MovieClip(root).Shield;

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 6
    Par défaut
    Bien, j'ai trouvé !

    Je vais expliqué pour ceux qui auraient le même problème :

    Sur mon stage qui ne possède pas de .as séparé mais codé sur la Timeline, j'ai mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var ForceField:MovieClip = new ForceShield ();
    Et dans mon fichier Missile qui lui est un .as séparé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     MovieClip(parent).ForceField.alpha = 1;
     MovieClip(parent).Shield -= 10;

    Merci encore à ceux qui ont pris la peine de répondre ! En espérant en avoir aidé !

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

Discussions similaires

  1. Modifier une variable Intouch depuis Windows
    Par Brebiou dans le forum Automation
    Réponses: 6
    Dernier message: 27/02/2015, 14h00
  2. [Débutant] Modifier une variable workspace depuis un GUI
    Par Dardie dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 04/04/2012, 17h20
  3. Modifier une variable d'une classe depuis une autre classe
    Par Kezado dans le forum Général Java
    Réponses: 8
    Dernier message: 23/09/2010, 14h52
  4. Modifier une variable de la scène depuis un clip
    Par NoArgl dans le forum ActionScript 3
    Réponses: 10
    Dernier message: 03/04/2009, 15h20
  5. Réponses: 5
    Dernier message: 08/09/2005, 20h33

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