如何实现弹性渐变效果显示时间和隐藏时间不同但连续



我试图在flex中实现淡入淡出效果。我实现了一种渐变效果,每10秒我就使用一次可见性。所以它的alpha从0到1和从1到0需要10秒。我想达到的是,我想让showfade持续10秒,hidefade效果持续5秒。我怎样才能做到这一点?

我的渐变效果:

<s:Fade id="showFade" alphaFrom="0" alphaTo="1" duration="10000"  target="{rssTextRichText}"/>
<s:Fade id="hideFade" alphaFrom="1" alphaTo="0" duration="10000" target="{rssTextRichText}"/>

我的富文本:

<s:RichText id="rssTextRichText"  x="{(mainContainer.width/1920)*60}" y="{(mainContainer.height/1200)*90}" 
fontWeight="bold" fontSize="15" color="0x787878"                    
width="{(mainContainer.width/1920)*435}" height="{(mainContainer.height/1200)*240}"  verticalAlign="top" visible="false" showEffect="{showFade}" hideEffect="{hideFade}">                                   
</s:RichText>

我的间隔和切换方法来启动效果:

var rssInterval:uint = setInterval(rssChanged, 10000);
public function rssChanged():void{
                rssTextRichText.visible = !rssTextRichText.visible;     
                setRSSLabel();
                rssTextRichText.visible = !rssTextRichText.visible;
            }

正如我所说,我想让showFade 10秒,hideFade 5秒。在hideFade之后,我希望showFade立即开始,而不是等待5秒钟。

谢谢你的帮助。

如果我理解你的问题,首先将你的hideFade持续时间设置为5000(5秒)

<s:Fade id="hideFade" alphaFrom="1" alphaTo="0" duration="5000" target="rssTextRichText}"/>

对于第二部分,如果要停止隐藏效果(如果它打开)并从那时开始显示showFade效果,则可以捕获EffectEvent.EVENT_start,停止隐藏效果并开始显示showFade效果:

function foo_handleEffectStart(e:EffectEvent):void {
 if(e.target == "showFade") {
   hideFade.stop();
   showFade.start(); // dunno if this is necessary or if the event starts anyway. 
 }
}

我的解决方案如下:(此外,第一个触发器应该在所需的应用程序位置提供)

<s:Fade id="showFade" alphaFrom="0.5" alphaTo="1" duration="20000"  target="{rssTextRichText}" 
                effectEnd="showFade_effectEndHandler(event);" effectStart="showFade_effectStartHandler(event);"/>
        <s:Fade id="hideFade" alphaFrom="1" alphaTo="0" duration="1000" target="{rssTextRichText}" 
                effectEnd="hideFade_effectEndHandler(event);" effectStart="hideFade_effectStartHandler(event);"/>

    protected function showFade_effectStartHandler(event:EffectEvent):void
    {
        setRSSLabel();
        //testArea.text+="showFade effect startn";

    }
    protected function hideFade_effectStartHandler(event:EffectEvent):void
    {
        //testArea.text+="hideFade effect startn";
    }
    protected function showFade_effectEndHandler(event:EffectEvent):void
    {
        //testArea.text+="showFade effect endn";               
        rssTextRichText.visible = !rssTextRichText.visible;
    }
    protected function hideFade_effectEndHandler(event:EffectEvent):void
    {
        //testArea.text+="hideFade effect endn";       
        rssTextRichText.visible = !rssTextRichText.visible;
    }

最新更新