2010-09-14 2 views
0

Я пытаюсь использовать параметр «define» mxmlc компилятора, чтобы вставлять константы времени компиляции в мои SWF-файлы.Получить переменную времени компиляции во время выполнения

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

я могу получить доступ к этой переменной, если я «жёстко» это в моем коде, как это:

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

Однако, я хотел бы быть в состоянии сделать это во время выполнения, используя нечто вроде getDefinitionByName ():

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

Это выдает следующее сообщение об ошибке:

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

Кто-нибудь знает, как выполнить загрузку константы времени компиляции в пространстве имен во время выполнения?

ответ

1

Константы времени компиляции не доступны во время выполнения. Они доступны только во время компиляции.

Если вам нужно его значение как пространство имен const, то правильным решением является «hardcode», как это было сделано.

+0

Спасибо :) Думаю, я просто надеялся, что можно будет найти его, как если бы это было определение в SWF-файле. –

+0

@tkk: Мне интересно, зачем вам это нужно. Если вам когда-либо понадобится значение в любой точке вашего кода, вы можете просто написать 'var something: String = NAMES :: PluginCompileTime;'. Я не понимаю, почему вам нужна явная копия значения в глобальном пространстве имен. – Gunslinger47

+0

Ну, одна из причин заключалась в том, что необходимость жесткого кодирования значения там вводит зависимость времени компиляции к кодовой базе. Если мне не нужно жестко кодировать, вместо этого можно использовать значения по умолчанию, что делает мою компиляцию немного более «переменной». :) –