【问题标题】:How can I animate between states in a programmatic skin? [FLEX]如何在程序化皮肤中的状态之间制作动画? [柔性]
【发布时间】:2010-05-12 11:05:56
【问题描述】:

我有一个带有各种状态(向上/向上/向下等)的按钮,它使用皮肤文件来呈现显示。我想实现状态之间的动画。例如,在从 'up' 到 'over' 的变化之间,我想淡入颜色和边框。

我目前这样做的方式是使用视图状态并使用过渡和 mx:AnimateProperty 在它们之间制作动画。但是,使用这种方法我只能为每个视图状态设置一个属性。所以只有边框,或者颜色可以动画。

有谁知道如何在程序化按钮皮肤的多个属性上实现多个动画?提前致谢!

注意:我已经研究过使用 tweener,但看不出它对我的情况有何帮助

【问题讨论】:

    标签: apache-flex animation button skin


    【解决方案1】:

    【讨论】:

    • 谢谢,但我应该提到我们希望远离 degrafa
    【解决方案2】:

    刘易斯,

    您将无法在 Flex 3 中为 ProgammaticSkin 的任何属性设置动画,因为 UIComponent 执行外观的方式是通过实例化您的外观的全新实例,然后设置其名称属性。然后,当组件需要显示新状态时,它会创建另一个新实例,将其 name 属性设置为不同的值,使旧皮肤不可见,并使新皮肤可见。通过这种方式,它“缓存”了皮肤,而不是在 UpdateDisplayList 中切换状态和重绘。

    因此,您无法轻松地为皮肤本身的任何绘图设置动画,但是,有一个解决方案,尽管它并不完全优雅。

    ProgammaticSkin 扩展了 FlexShape,因此您不能将任何子级添加到您的皮肤中,但 UIComponent 会寻找实现 IProgrammaticSkin 的东西,因此您可以制作自己的 ProgrammaticSkin 来扩展 FlexSprite 而不是 FlexShape。这允许您将Child 添加到您的皮肤中。如果您足够聪明,您可以在各种缓存的皮肤之间同步过渡以使它们具有动画效果。

    希望对你有帮助,

    乔纳森

    【讨论】:

      【解决方案3】:

      既然你使用皮肤文件,我猜你使用的是 Flex4。

      在 Flex4 中,您可以使用包装在 s:Sequence 或 s:Parallel 节点中的多个 mx:AnimatePropery 声明。

      <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>
      

      【讨论】:

      • 感谢您的回复。我正在使用 Flex 3,我用来实现动画的解决方案是使用 tweener 类为按钮的各种图形的 alpha 值设置动画
      • “既然你使用皮肤文件,我想你使用 Flex4”,这是一个轻率的假设。 Flex 3 中的每个内置 Halo 控件都使用 ProgrammaticSkins 绘制自身。因此,如果有人使用皮肤文件,他可以使用 Flex 3 或 Flex 4。
      • 我的印象是 Flex 4 中的新 Spark 组件架构也引入了整个蒙皮概念。
      • 不,他们只是改进了它。
      猜你喜欢
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 2013-05-27
      • 2011-09-11
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      相关资源
      最近更新 更多