Как можно анимировать между состояниями в программной оболочке? [FLEX] - PullRequest
2 голосов
/ 12 мая 2010

У меня есть кнопка с различными состояниями (вверх / вверх / вниз и т. Д.), Которая использует файл скина для визуализации дисплея. Я хочу добиться анимации между государствами. Например, между переходом от «вверх» к «над» я хочу исчезнуть цветом и границей.

То, как я сейчас это делаю, - это использование состояний просмотра и анимация между ними с помощью переходов и mx: AnimateProperty. Тем не менее, используя этот метод, я могу анимировать только одно свойство на представление состояния. Таким образом, только граница или цвет могут быть анимированы.

Кто-нибудь знает, как можно добиться нескольких анимаций на нескольких свойствах обложки программной кнопки? Заранее спасибо!

Примечание: я изучил использование tweener, но не вижу, как это поможет моей ситуации

Ответы [ 3 ]

0 голосов
/ 31 мая 2010

Поскольку вы используете файлы скинов, я полагаю, вы используете Flex4.

В Flex4 вы можете использовать несколько объявлений mx: AnimatePropery, заключенных в узел s: Sequence или s: Parallel.

<s:transitions>
  <s:Transition>
    <s:Parallel>
      <mx:AnimateProperty
        target="{button}"
        property="property1"
        fromValue="property1StartValue"
        toValue="property1EndValue" />
      <mx:AnimateProperty
        target="{button}"
        property="property2"
        fromValue="property2StartValue"
        toValue="property2EndValue" />
    </s:Parallel>
  </s:Transition>
</s:transitions>
0 голосов
/ 30 июня 2010

Льюис,

Вы не сможете анимировать какие-либо свойства ProgammaticSkin в Flex 3, потому что UIComponent выполняет скины, создавая экземпляр целого нового экземпляра вашего скина и затем устанавливая его свойство name. Затем, когда компоненту необходимо отобразить новое состояние, он создает другой новый экземпляр, устанавливает для своего свойства name что-то другое, делает старый скин невидимым и делает новый скин видимым. Таким образом, он «кэширует» скины вместо переключения состояний и перерисовки в UpdateDisplayList.

Теперь из-за этого вы не можете легко оживить любой рисунок самой кожи, однако, есть решение, хотя оно не совсем элегантно.

ProgammaticSkin расширяет FlexShape, поэтому вы не можете добавлять дочерние элементы в свой скин, но UIComponent ищет что-то, что реализует IProgrammaticSkin, поэтому вы можете создать свой собственный ProgrammaticSkin, который расширяет FlexSprite вместо FlexShape. Это позволяет добавить ребенка в свой скин. Если вы достаточно умны, вы можете синхронизировать переходы между различными кэшированными оболочками, чтобы сделать их анимируемыми.

Надеюсь, это поможет,

Джонатан

0 голосов
/ 13 мая 2010
...