#apache-flex #mxml #flex4.5 #transitions
#apache-flex #mxml #flex4.5 #переходы
Вопрос:
Я думаю, что я только что обнаружил очевидную ошибку в flex 4.5.
Ссылка на соответствующее приложение находится здесь. ПРОСМОТР ИСХОДНОГО КОДА ВКЛЮЧЕН !!
Это переходы:
<s:states>
<s:State name="State1"/>
<s:State name="State2"/>
<s:State name="State3"/>
</s:states>
<s:transitions>
<s:Transition fromState="State1" toState="State2" autoReverse="true" >
<s:Sequence>
<s:Move duration="500" target="{goButton}"/>
<s:AddAction targets="{[tagsLabel,tagsTextInput]}"/>
<s:Fade targets="{[tagsLabel,tagsTextInput]}" duration="500" />
</s:Sequence>
</s:Transition>
<s:Transition fromState="State1" toState="State3" >
<s:Sequence>
<s:RemoveAction targets="{[searchLabel,searchTextInput,inLabel,inDropDownList]}" />
<s:Move duration="500" target="{goButton}" />
<s:AddAction target="{lessonsDataGrid}" />
</s:Sequence>
</s:Transition>
<s:Transition fromState="State2" toState="State3" >
<s:Sequence>
<s:RemoveAction targets="{[searchLabel,searchTextInput,inLabel,inDropDownList,tagsLabel,tagsTextInput]}" />
<s:Move duration="500" target="{goButton}" />
<s:AddAction target="{lessonsDataGrid}" />
</s:Sequence>
</s:Transition>
<s:Transition fromState="State3" toState="State1" >
<s:Sequence>
<s:RemoveAction target="{lessonsDataGrid}" />
<s:Move target="{goButton}" duration="500" />
<s:AddAction targets="{[searchLabel,searchTextInput,inLabel,inDropDownList]}" />
</s:Sequence>
</s:Transition>
</s:transitions>
Видите ли, я здесь немного работаю с переходами; один переход активируется на DropDownList
indexChangeEvent
, а другой запускается clickEvent
на увеличителе Button
.
Проблема, с которой я сталкиваюсь, заключается в следующем:
Если я нажму на «лупу» Button
три раза (не 3 раза подряд, а 1 щелчок, дождитесь перехода, еще один щелчок, дождитесь перехода, последний щелчок), я получаю забавное поведение: лупа Button
исчезает, хотя я никогда не заставлял ее исчезать при переходах; и TextInput
то, что должно было исчезнуть, не исчезло; оно каким-то образом застряло State3
в том состоянии, в котором находится Datagrid
.
Поверьте мне, я потратил не менее 4 часов на написание и переписывание этих переходов, я перепробовал все виды вещей в Интернете, но безрезультатно.
Надеюсь, кто-нибудь сможет помочь, мне бы не хотелось признавать, что у Flex есть ошибка. Я был бы рад узнать, что я сделал что-то не так, и что Flex по-прежнему надежен.
Большое спасибо.
Ответ №1:
Я некоторое время играл с этим. Заметил, что по какой-то причине при изменении состояний один из переопределений AddItems удаляет элемент с индексом 0 из контейнера Border (вы можете отладить и убедиться сами, если добавите обработчик для события removedFromStage в goButton). Я все еще расследую проблему, но у меня есть быстрое решение для вас. Просто включите goButton во всех трех состояниях: includeIn=»State1, State2, State3″, и он не исчезнет :] Если я найду причину, я отправлю ее вам.
Надеюсь, это поможет,
Blaze