2011-01-31 38 views
1

我已经有两个状态的项目,最好的形容为打开和关闭,他们是这样的:我应该如何平滑/ Flex中这两种状态之间的转换flashbuilder

closed

open

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

然而,这显然超出了我和我不能一小时+我在这里张贴这样做搏斗之后: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

如果你不介意做一些动作编码,使用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(); 
     } 

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

+0

您确定这是在Flex 4中执行状态转换的最佳方式吗?如果他们对MXML使用/使用舒适,则认为并行效果将会成为其中的一种方式 – Ryan 2011-02-01 10:33:53

0

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