Aide - Recherche - Membres - Calendrier
Version complète : Paramètres de compilation
Centre de Formation Flash - Forums Adobe Flash > Rich media et intégration > Flex
ArAgorrn
Bonjour,

J'ai un projet qui est déployé sur deux machines différentes et j'ai une variable URL que j'utilise dans un HTTPService. Je voudrais pouvoir faire en sorte qu'en fonction de l'endroit où je deploie mon application cette variable prenne la bonne valeur. Je ne sais pas si je dois passer par un paramètre de compilation ou plutot par un fichier de configuration présent sur le serveur.
Pour l'instant, je suis obligé de changer la variable, de compiler puis de rechanger pour mettre celle de l'autre serveur. C'est fastidieux et souvent générateur d'erreur (oubli de changer la variable pour un serveur -> pas de communication -> erreur de flex).

Si quelqu'un a une idée...

ArA

P.S : on avait déjà cherché avec Iteratif mais après moultes transformations d'un fichier XML dont je ne me rappelle plus le nom, on a laissé tomber.
Tonic
Salut,

pourquoi ne pas tout simplement stocker cette variable dans un xml par exemple, et au chargement de l'application, lire ce xml pour récupérer cette valeur...
ArAgorrn
CITATION(Tonic @ Jul 4 2007, 12:55 PM) *
Salut,

pourquoi ne pas tout simplement stocker cette variable dans un xml par exemple, et au chargement de l'application, lire ce xml pour récupérer cette valeur...


C'est une solution en effet. L'ennui c'est que mes services HTTP démarrent dès le début de l'application. Il faut donc que j'attende la fin du chargement du XML pour charger l'interface complète. ça fait des temps d'attente supplémentaire.
Mais je chipote.
Tonic
Clair que tu chippote, un xml de 1ko, tu le sents pas passer icon_wink.gif

Ca te donnerait un script de ce genre:

CODE
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()" autoLayout="false" mouseFocusEnabled="false" focusRect="0">
    <mx:XML id="xml" source="monXml.xml" />
    <mx:Script>
        <![CDATA[
            [Bindable]
            private function init():void
            {
                trace(xml.maVariable);                
                        //démarrage de tes service
            }
        ]]>
    </mx:Script>  
</mx:Application>
ArAgorrn
ça marche. C'est cool. Je vais chipoter un peu moins à l'avenir.


merci.

ArA
ArAgorrn
Euh, je vais continuer à faire mon chieur mais un collègue m'a donné ce code là à la place :

CODE
<mx:Model id="confObject" source="configfile.xml"/>


ça marche très bien dans un composant MXML. Par contre je voudrais le transposer dans une classe AS3. Comment faire ?

ArA.
ArAgorrn
Finalement ceci n'est pas une solution car je suis quand même obligé de faire le changement dans le fichier XML à chaque compilation. ça a juste déplacé le problème. Il vaudrait mieux que ce fichier soit sur le serveur.
Tonic
Si tu utilises Model, il semblerait qu'a chaque fois que tu veux modifier des propriétés xml, tu doives recompiler ton application.

CITATION
The compiler reads the source value and compiles the source into the application; the source value is not read at runtime.


Tu cherches vraiment à faire cela?

Sinon, un exemple de model : http://livedocs.adobe.com/flex/2/docs/wwhe...e=00001049.html
Fusion
CITATION(ArAgorrn @ Jul 5 2007, 10:33 AM) *
Finalement ceci n'est pas une solution car je suis quand même obligé de faire le changement dans le fichier XML à chaque compilation. ça a juste déplacé le problème. Il vaudrait mieux que ce fichier soit sur le serveur.


Tu ne peux pas avoir deux fichiers XML de même nom, un en local l'autre sur le serveur? Tu mets dedans la variable avec la valeur local ou serveur, et c'est OK.
ArAgorrn
CITATION(Fusion @ Jul 5 2007, 08:36 AM) *
Tu ne peux pas avoir deux fichiers XML de même nom, un en local l'autre sur le serveur? Tu mets dedans la variable avec la valeur local ou serveur, et c'est OK.


Si, c'est ce que j'aimerais obtenir.
J'ai essayé le code de Tonic avec comme XML :

CODE
<configfile>
   <url> 192.168.122.188</url>
</configfile>


Quand je fais trace(xml.url) il ne me met rien. Pourtant quand je débugge, j'ai bien mon XML formé dans l'objet 'xml'.
Fusion
CITATION(ArAgorrn @ Jul 5 2007, 10:41 AM) *
Quand je fais trace(xml.url) il ne me met rien. Pourtant quand je débugge, j'ai bien mon XML formé dans l'objet 'xml'.


Essaie (tracexml..url), il manque peut-être un niveau de hiérarchie dans le XML.
Tonic
Salut, ca marche très bien :

CODE
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" autoLayout="false" focusRect="0" creationComplete="init()">
    <mx:XML source="fichier.xml" id="xml" />
    <mx:Script>
        <![CDATA[                        
            private function init():void
            {
                trace(xml.url);
            }            
        ]]>
    </mx:Script>      
</mx:Application>


fichier.xml :

CITATION
<?xml version="1.0" encoding="utf-8"?>
<configfile>
<url> 192.168.122.188</url>
</configfile>
ArAgorrn
Au temps pour moi ça marche. Par contre, j'ai l'impression (mais je vais tester) que l'url est alors "embarquée" dans le SWF final. Donc quand je vais copier ce swf sur un autre serveur , il continuera à linker vers l'url qui était dans le xml à la compilation, non ?
Il vaudrait mieux que le fichier XML soit sur les serveurs et non dans le projet FLEX.
Tonic
Il linkera là où tu lui demanderas de linker, c'est tout...

CITATION
Il vaudrait mieux que le fichier XML soit sur les serveurs et non dans le projet FLEX.


Il ne linkera pas sur ton fichier local, ca c'est sûr.

Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.