我试图在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;
}