Чтобы ответить на ваши вопросы, но в обратном порядке:
(2) Вы хотите использовать возможность autoReverse
, которая является свойством искрового перехода. Вы можете сделать это, просто добавив autoReverse="true"
к своим текущим переходам, но я бы также предложил упростить их до следующего отдельного перехода и использовать эффект Spark Resize вместо MX AnimateProperty:
<s:Transition autoReverse="true">
<s:Resize target={textInput}" duration="3000"/>
</s:Transition>
Затем, если вы определите значения для width
на самом компоненте, переход позаботится об остальном:
<s:TextInput x="100" id="textInput" width.normal="100" width.selected="300"/>
Это должно позаботиться о "выталкивании" между значениями состояний normal
и selected
. Что касается вопроса зависания:
(1) Если вы посмотрите видео Чета Хааза на Adobe TV об автореверсивных переходах , он заявляет, что одним из главных недочетов или недостатков в автореверсной архитектуре является то, что он обрабатывает только переходы из A-> B и B-> A. Если вы попытаетесь перейти в третье состояние (в вашем случае «завис»), автореверс не удастся. К сожалению, по крайней мере, у нас есть автореверс, который даже не был доступен в Flex 3.
ОДНАКО, есть обходной путь, по крайней мере, для простого ItemRenderer, который вы опубликовали: Попробуйте полностью удалить состояние hovered
.
<!--s:State name="hovered" /-->
До тех пор, пока вы не планируете делать что-то особенное в ItemRenderer во время состояния наведения, это должно работать нормально, и это избавит от всплесков между состояниями.