Forums Développement Multimédia

Aller au contenu

Passer une variable entreun SWF et Flex

CODE Actionscript

1 réponse à ce sujet

#1 SkZoo

    Ceinture Jaune

  • Members
  • PipPip
  • 16 messages

Posté 16 May 2013 - 06:44 AM

Bonjour à toute la communautée,

J'ai un besoin urgent de transmettre des variables depuis un swf à flex.
J'ai donc créer ce bout de code afinde trouver une solution, mais cela evidemment ne fonctionne pas sinon je ne serais pas là :)
J'ai donc créer 2 fichiers mxml :
Le premier "Main.mxml"

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
          xmlns:s="library://ns.adobe.com/flex/spark"
          xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
          creationComplete="recup()">
<fx:Script>
  <![CDATA[
   [Bindable]
   protected var variable:String = "variable de base";
 
   protected function recup():void {
        loader.content.addEventListener( "envoiVariable" , handleEvent );
        trace('listener OK');
   }
 
   protected function handleEvent(evt:Event):void {
        trace('function recup OK')
        loader.content['variableSWF'] = variable;
   }
 
  ]]>
</fx:Script>

<s:HGroup width="600">
  <s:Spacer width="100" />
  <s:Label text="{ variable }" />
  <s:Spacer width="50" />
  <s:SWFLoader id="loader" source="../bin-debug/chgmntVariable.swf" />
  <s:Spacer width="100" />
</s:HGroup>

</s:Application>
 

Puis un fichier "chgmntVariable.mxml" qui est en autre chargé avec le swf loader :

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
          xmlns:s="library://ns.adobe.com/flex/spark"
          xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Script>
  <![CDATA[
 
   protected var variableSWF:String;
 
   protected function chgmntVariableFunc(event:MouseEvent):void{
        trace('function chgmnt OK');
        variableSWF = 'variable modifié';
        trace('variable SWF = ' + variableSWF);
        dispatchEvent(new Event("envoiVariable"));
        trace('dispatch OK');
   }
 
  ]]>
</fx:Script>

<s:Button label="Changer la variable" click="chgmntVariableFunc(event)" />

</s:Application>
 

En sortie de console j'ai ça :

Citation

[SWF] C:\WebDev\test envoi variable\bin-debug\Main.swf\[[DYNAMIC]]\1 - 1 223 478 octets après la décompression
[SWF] C:\WebDev\test envoi variable\bin-debug\Main.swf - 175 796 octets après la décompression
[SWF] C:\WebDev\test envoi variable\bin-debug\Main.swf\[[DYNAMIC]]\2 - 763 122 octets après la décompression
[SWF] C:\WebDev\test envoi variable\bin-debug\Main.swf\[[DYNAMIC]]\3 - 2 083 945 octets après la décompression
[SWF] C:\WebDev\test envoi variable\bin-debug\chgmntVariable.swf - 169 216 octets après la décompression
listener OK
function chgmnt OK
variable SWF = variable modifié
dispatch OK

Et si je rappui sur mon bouton il me reércit :

Citation

function chgmnt OK
variable SWF = variable modifié
dispatch OK

Sans jamais lancer la function handleEvent.

J'ai donc l'impression que ma fonction censé changer la variable dans le fichier "main.mxml" ne se lance pas malgré le dispatch event...

Une idée? Ou peut etre je ne m'y prend pas du tout de la bonne facon... A vous de me dire.

Merci à tous.

SkZoo

PS : Je me permet de rajouter une archive en *.rar contenant le projet.

Fichier(s) joint(s)



#2 Tonic

    Plop

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 5712 messages

Posté 05 June 2013 - 14:35 PM

Salut,

1) attend que ton swf loader soit chargé avant de mettre un listener dessus
2) assure toi que "loader.content" pointe bien sur mxml application, et non sur un conteneur parent.
3) ton set de variable ne pourra pas marcher, ta variable est protected, et donc pas accessible ailleurs.

++ ^^



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