我应该如何在flex / flash构建器中平滑这两种状态之间的转换

时间:2011-01-31 23:28:17

标签: flex actionscript-3 flex4 mxml transitions

我有一个项目有两个状态,最好描述为开放和关闭,它们看起来像这样:

closed

open

我想要做的是平滑一个状态和另一个状态之间的过渡,有效地通过在两个点之间以平滑的方式(正弦)进行插值来移动页脚/按钮块然后淡入饼形图。

然而,这显然超出了我,在我无法这样做了一个小时之后摔跤+我在这里张贴:D

所以我的转换块看起来如下

<s:transitions>
    <s:Transition id="TrayTrans" fromState="*" toState="*">
        <s:Sequence>
            <s:Move duration="400" target="{footer}" interpolator="{Sine}"/>
            <s:Fade duration="300" targets="{body}"/>   
        </s:Sequence>       
    </s:Transition>

    <s:Transition>
        <s:Rotate duration="3000" />
    </s:Transition>
</s:transitions> 

其中{body}表示饼图,{footer}表示页脚/按钮块。

然而这不起作用,所以我真的不知道该怎么做......

可能有益的其他信息:

主体块总是固定高度(在某些效果中可能用于Xby变量?)。

它需要双向工作。

哦,Sine块在声明中定义如上<s:Sine id="Sine">

此外!我如何设置饼图使用这些过渡块连续旋转? (这可能会在没有标签的情况下发生)或者这是错误的方式,因为它不是这样的过渡?

我所追求的效果是饼图在选择下面的按钮之前没有标签的情况下缓慢旋转,但在选择时旋转停止并且标签出现......

提前多多感谢!

在灰度上道歉,但我无法真正决定配色方案。欢迎任何建议。

2 个答案:

答案 0 :(得分:2)

如果你不介意做一些动作编码,那么使用as3函数就会变得非常简单。

您需要执行以下操作:

public function doTransition():void
        {
            var move:Move= new Move();
            move.target=footer;
            move.yFrom = 0;//current position
            move.yTo = 400;//or whatever is the final position of the footer
            move.duration=500;//duration in milliseconds

            var resize:Resize=new Resize();
            resize.target=body;
            resize.heightFrom=0;//or whatever is initial height
            resize.heightTo=400;//or whatver is the final height
            resize.duration=500;

            var fadeIn:Fade =new Fade();
            fadeIn.target = pieChart;//the id of the piechart
            fadeIn.alphaFrom =0;
            fadeIn.alphaTo = 1;
            fadeIn.duration =500;

            move.play();
            resize.play();
            fadeIn.play();
        }

这样做,你需要代码来旋转饼图。 为此,您可以使用计时器和旋转变换。

答案 1 :(得分:0)

为了让您的补间更容易,我建议您使用TweenLite完成工作。你最终会写下更少的动作。