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