2008-09-19 2 views
4

MXML позволяет сделать обязательными некоторые действительно очень мощные данные, такие как:Дубликат комплекс MXML связывания в ActionScript

<mx:Button id="myBtn" label="Buy an {itemName}" visible="{itemName!=null}"/> 

Я обнаружил, что класс BindingUtils может связать значения для простых свойств, но ни один из переплетов выше сделай это. Можно ли сделать то же самое в коде AS3, или Flex автоматически генерирует много строк кода из моего MXML? Можно ли дублировать выше в чистом AS3, начиная с:

var myBtn:Button = new Button(); 
myBtn.id="myBtn"; 
??? 

ответ

0

Я считаю, что прогибается создает небольшую анонимную функцию, чтобы справиться с этим.

Вы можете сделать подобное с помощью ChangeWatcher. Возможно, вы даже можете сделать новую анонимную функцию в вызове changewatcher.

2

Способ использования bindSetter. Точно так же это делается за кулисами, когда MXML в вашем примере преобразуется в ActionScript перед компиляцией.

// assuming the itemName property is defined on this: 
BindingUtils.bindSetter(itemNameChanged, this, ["itemName"]); 

// ... 

private function itemNameChanged(newValue : String) : void { 
    myBtn.label = newValue; 
    myBtn.visible = newValue != null; 
} 

... за исключением того, что код, сгенерированный MXML для преобразования ActionScript больше, как это должно быть более общим. В этом примере он, скорее всего, сгенерировал две функции: по одному для каждого связывающего выражения.

2

Вы также можете просмотреть автоматически сгенерированный код, который делает flex при компиляции вашего файла mxml, добавив аргумент -keep в настройки вашего компилятора. Вы можете найти свои настройки, выбрав свойства своих проектов и посмотрев опцию «Компилятор Flex», а затем в разделе «Дополнительные аргументы компилятора:» добавьте «-keep» к тому, что уже существует.

После выполнения Flex создаст «сгенерированный» каталог в исходной папке, и внутри вы найдете все временные файлы, которые использовались во время компиляции.

Смежные вопросы