向VGroup添加元素或从VGroup中删除元素时,我需要使其平滑进行,然后调整项目的大小。我相信我必须使用过渡效果。但是如何?


在项目(元素)级别?
在VGroup级别?
我应该改为使用DataGroup并在ItemRenderer级别上使用它吗?


我一直在尝试在项目级别执行此操作,但仍然无法使其正常工作,并且感觉不正确。感觉应该在更高级别上进行。

例如,我定义了一个“死亡”状态,该状态将项目的大小调整为height = 0。但是,在收缩之后,它必须以某种方式通知VGroup,以便将其删除或将自身从VGroup中删除。感觉不必要的复杂。

我希望找到一种将效果与从VGroup中插入和删除项目相关联的方法?有任何想法吗?

提前致谢,
no野

最佳答案

我相信我找到了执行此操作的正确方法。当将组件作为VGroup的子级添加时,将调用两个事件“ addedEffect”和“ removedEffect”。

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
         xmlns:s="library://ns.adobe.com/flex/spark"
         xmlns:mx="library://ns.adobe.com/flex/mx"
         width="100%"
         addedEffect="{addedEffect}"
         removedEffect="{removedEffect}"
         clipAndEnableScrolling="true" xmlns:gui="gui.*">

  <fx:Declarations>

    <s:Sequence id="addedEffect" targets="{[this, callWindow]}">
      <s:Move duration="300" xTo="0" target="{callWindow}" />
    </s:Sequence>

    <s:Sequence id="removedEffect" targets="{[this, callWindow]}">
      <s:Move duration="300" xFrom="0" xTo="300" target="{callWindow}" />
      <s:Scale target="{this}"
               scaleYFrom="1.0" scaleYTo="0.0"
               duration="300"/>
    </s:Sequence>

  </fx:Declarations>

  <gui:CallWindow id="callWindow"
                     width="100%" minHeight="0" x="300" />

</s:Group>


因此,它是在项目级别完成的,但是有一种优雅的方法可以做到。

谢谢,
no野

10-06 09:08