#apache-flex #actionscript-3 #flex4
#apache-flex #actionscript-3 #flex4
Вопрос:
Я только начинаю переходить с flash на flex для улучшения компонентов. Я пробую простой эксперимент по добавлению кнопки, а затем изменению метки. Этот код не работает. Он не распознает MyButton. Во flash я мог получить доступ к экземпляру кнопки после добавления его, используя имя экземпляра. Вы не можете сделать это в flex? Спасибо
<s:Button x="50" y="42" label="Button" id="myButton"/>
<fx:Script>
<![CDATA[
myButton.label="winning";
]]>
</fx:Script>
Ответ №1:
Flex имеют структуру, основанную на событиях, вы не можете просто поместить команду / выражение в блок сценария, это должно быть обернуто в функцию
Нравится
private function changelabel():Void
{
myButton.label="winning";
}
и вам нужно вызвать эту функцию при таком событии, как событие нажатия кнопки, как
<s:Button x="50" y="42" label="Button" id="myButton" click="{changelabel()}"/>
Вам следует прочитать о переносе приложения Flash на Flex
и чтобы ознакомиться с Flex, вам следует посетить Flex Developer Center
Надеется, что это поможет
Комментарии:
1. На самом деле, вы можете поместить код в блок скрипта без функции, но в MXML это имеет мало смысла. Этот код выполняется при создании компонента, а его дочерние элементы еще не существуют.
2. Приведенный выше код не работает. Но этот код делает. <?xml version=»1.0″ encoding=»utf-8″?> <s: Application xmlns:fx=» ns.adobe.com/mxml/2009 » xmlns: s=»библиотека://ns.adobe.com/flex/spark» xmlns:mx=»библиотека: //ns.adobe.com/flex/mx» MinWidth=»955″ minHeight=»600″> <fx:Script> <![CDATA[ функция changelabel() { MyButton. label = «выигрышный»; } ]]> </fx:Script> <s:Кнопка x= «50» y = «42» label=»Кнопка» id =»MyButton» click=»метка изменения()»/> </s:Приложение>