2010-09-14 6 views
0

J'essaie d'utiliser l'option "define" du compilateur mxmlc pour incorporer des constantes de compilation dans mes fichiers SWF.Récupère la variable de compilation au moment de l'exécution

<mxmlc ...> 
    <define name="NAMES::PluginCompileTime" value="Hello World!"/> 
</mxmlc> 

Je peux accéder à cette variable si je « hardcode » dans mon code de base, comme si:

public static const PLUGIN_COMPILED_TIME:String = NAMES::PluginCompileTime; 

Cependant, je voudrais être en mesure de le faire à l'exécution en utilisant quelque chose comme getDefinitionByName ():

var value:* = flash.utils.getDefinitionByName("NAMES::PluginCompileTime"); 

Cela jette l'erreur suivante:

ReferenceError: Error #1065: Variable PluginCompileTime is not defined. 

Est-ce que quelqu'un sait comment charger une constante de compilation dans un espace de noms lors de l'exécution?

Répondre

1

Les constantes de compilation ne sont pas disponibles au moment de l'exécution. Ils ne sont disponibles qu'au moment de la compilation.

Si vous avez besoin de sa valeur en tant que const de l'espace de noms, alors la bonne solution est de "coder en dur" comme vous l'avez fait.

+0

Merci :) Je suppose que j'espérais juste qu'il serait possible de le rechercher comme s'il s'agissait d'une définition dans le fichier SWF. –

+0

@tkk: Je me demande pourquoi vous devez faire cela. Si jamais vous avez besoin de la valeur à n'importe quel point de votre code, vous pouvez simplement écrire 'var quelque chose: String = NAMES :: PluginCompileTime;'. Je ne vois pas pourquoi vous auriez besoin d'une copie explicite de la valeur dans un espace de noms global. – Gunslinger47

+0

Eh bien, l'une des raisons serait que d'avoir à coder en dur la valeur introduise une dépendance de temps de compilation dans la base de code. Si je n'ai pas besoin de coder en dur, les valeurs par défaut peuvent être utilisées à la place, rendant ma compilation un peu plus "variable". :) –

Questions connexes