Forums Développement Multimédia

Aller au contenu

Impossible d'accéder aux variables entre plusieurs SWF.

AS3 PARENT ROOT SWF EXTERNE GAME

6 réponses à ce sujet

#1 Eze

    Ceinture Blanche

  • Members
  • Pip
  • 3 messages

Posté 28 January 2015 - 11:50 AM

Hi.
Oui je sais cette question a déjà été posée des centaines de fois. Mais rien y fait. Quelque chose m'échappe. Je cherche des explications. Voici le problème :

Je (tente) de créer un petit jeu. Il se compose de quatre fichiers.
- Un XML avec les données de départ et celles des niveaux : data.xml
- Un SWF pour le jeu (le moteur en gros) : jeu.fla
- Un autre pour l'interface : hud.fla
- Et un dernier qui se charge de charger^^ les précédents dans cet ordre ; chargeur.fla

Tout se charge et s'affiche bien. Mais impossible de récupérer des variables entre SWF.

chargeur.fla :
var chargeurURL:Array = new Array("jeu.swf", "hud.swf");
var chargeur:Loader = new Loader();
var chargeurI:int = 0;
var TEST:String = "Je m'arrache les cheveux";
chargeur.contentLoaderInfo.addEventListener(Event.COMPLETE, charger);
function charger(pEvt:Event){
// JEU
if(chargeurI==0){  
  var JEU:DisplayObject = pEvt.target.content;
  JEU.x = 100;
  this.addChild(JEU);
  chargeurI++;
  chargeur.load(new URLRequest(chargeurURL[chargeurI]));
  trace("JEU charger");
}
// HUD
else if(chargeurI==1){
  var HUD:DisplayObject = pEvt.target.content;
  this.addChild(HUD);
  chargeurI++;
  trace("HUD charger");
}
}
chargeur.load(new URLRequest(chargeurURL[chargeurI]));

hud.fla :
var scenarioPrincipal:DisplayObject = root.parent.root;
if(scenarioPrincipal is MovieClip){
trace(MovieClip(scenarioPrincipal).TEST);
}

Impossible d'accéder à la variable TEST. J'ai essayé plein de syntaxes différentes je ne trouve pas la solution. Quelque chose m'échappe.
Si vous avez la solution et des explications je suis preneur ;-). Merci beaucoup.

#2 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 28 January 2015 - 14:30 PM

j'avais mis un truc sur mon site qui ressemblait a ça

trace(this.parent.parent["test"] ); ///bien sur x*fois parent par rapport a ton environnement.

a tester?
@+ gustave02

#3 Eze

    Ceinture Blanche

  • Members
  • Pip
  • 3 messages

Posté 30 January 2015 - 19:44 PM

Merci Gustave02 mais rien n'a faire. Ça moarche poa... l'hiver doit sûrement me bousiller les neurones et/ou ma rigueur.
Du coup je fais tout dans un seul fichier. C'est aussi lourd en octet que pour bosser mais ça a le mérite de fonctionner.

Je lâche pas l'affaire pour autant. La technologie est censée nous servir et pas nous asservir. ;)

#4 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1783 messages

Posté 30 January 2015 - 22:16 PM

tu peux utiliser une classe avec une variable statique

package com {
  public class Globals {
        public static var topLevel:Object;
  }
}

dans chargeur.fla
import com.Globals;
Globals.topLevel = this;
var TEST:String = "Je m'arrache les cheveux";

dans hud.fla
import com.Globals;
trace(Globals.topLevel.TEST);


#5 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 30 January 2015 - 22:37 PM

bonsoir apres quelque recherche j'ai retrouvé l'exemple qui avait été réalisé
tu peux l' avoir http://www.citroen-f...rs-nord.fr/Eze/

en espérant que ça t'aide

dans cet exemple un swf principal en charge d'autre et il y a transfert de variable entre eux .
tu as accés aux fla.
@+ gustave02

#6 Eze

    Ceinture Blanche

  • Members
  • Pip
  • 3 messages

Posté 31 January 2015 - 09:16 AM

Merci les gars ;) pour vos réponse pertinentes. J'utilise pas assez les class (ou j'ai un peu de mal avec) en fait. Je vais garder la Citroën au garage bien au chaud.

Problème résolu.

#7 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 03 February 2015 - 10:52 AM

J'ai mis quelques exemples sur mon site pour passer les variables entre swf parent.

http://www.citroen-f...fant/index.html .


@+ gustave02



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP