#apache-flex #flex4
#apache-flex #flex4
Вопрос:
Мне интересно найти наилучший подход к этой проблеме, технически это не сложно, но должно быть элегантное решение.
В принципе, у меня есть форма, которая содержит в основном текстовые вводы, я хотел бы изменить стиль полей ввода на основе текущего состояния.
Я могу сделать это в mxml для каждого ввода…
<s:TextInput text="label" borderColor.State1="0xFFFFFF" borderColor.State2="0x000000"/>
Но это включает в себя создание свойств для каждого отдельного элемента в форме.
Должен быть лучший способ сделать это без добавления свойства к каждому элементу?
Спасибо!
Комментарии:
1. Вы можете зациклить дочерние элементы формы и применить стиль
Ответ №1:
Вы можете использовать transitions и setAction для одновременной установки стилей для нескольких объектов на основе нового viewstate. Это фрагмент примера из документации SDK: .
<s:states>
<s:State name="Login" />
<s:State name="Register" />
</s:states>
<s:transitions>
<!-- Define the transition from the base state to the Register state.-->
<s:Transition id="toRegister" fromState="*" toState="Register">
<s:Sequence targets="{[loginPanel, registerLink, confirm, loginLink]}">
<s:RemoveAction />
<s:Fade />
<s:SetAction target="{loginPanel}" property="title" />
<s:SetAction target="{loginButton}" property="label" />
<s:SetAction target="{loginButton}" property="color" />
<s:Resize target="{loginPanel}"/>
<s:AddAction />
<s:Fade />
</s:Sequence>
</s:Transition>
<!-- Define the transition from the Register state to the base state.-->
<s:Transition id="toDefault" fromState="Register" toState="*">
<s:Sequence targets="{[loginPanel, registerLink,
confirm, loginLink]}">
<s:RemoveAction/>
<s:SetAction target="{loginPanel}" property="title"/>
<s:SetAction target="{loginButton}" property="label"/>
<s:SetAction target="{loginButton}" property="color"/>
<s:Resize target="{loginPanel}"/>
<s:AddAction/>
</s:Sequence>
</s:Transition>
</s:transitions>
Вы можете просто настроить таргетинг на все в последовательности (вместо этого используя разные таргеты для каждого setAction) и использовать свойство ‘value’ setAction, чтобы установить нужные значения.
Комментарии:
1. Отлично, спасибо, у меня уже есть переход между двумя состояниями, так что это отличное простое решение.