检查Flex 3中是否有任何效果正在播放

时间:2011-10-26 09:23:33

标签: actionscript-3 flex flex3 mxml effects

我在Flex应用程序中使用了一些效果......它们都在mxml标签中声明... 例如:

<mx:Fade id="fadeIn" alphaTo="1" duration="500"/>
<mx:Fade id="fadeOut" alphaTo="0" duration="500"/>
<mx:Move id="moveEffect" duration="500"/>
<mx:Rotate id="rotateEffect" duration="500"/>

通常情况下,当我触发一些效果时,如果有任何效果正在播放,我想禁用所有交互,所以我想知道除了

还有一种方法可以在actionscript中检查这样的事情
if (!fadeIn.isPlaying && !fadeOut.isPlaying && !moveEffect.isPlaying && !rotateEffect.isPlaying)

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

使用ArrayVector

包裹您的效果
<fx:Declarations>
    <fx:Vector id="effects" type="mx.effects.Effect">
        <mx:Fade id="fadeIn" alphaTo="1" duration="500"/>
        <mx:Fade id="fadeOut" alphaTo="0" duration="500"/>
        <mx:Move id="moveEffect" duration="500"/>
        <mx:Rotate id="rotateEffect" duration="500"/>
    </fx:Vector>
</fx:Declarations>

private function isEffectPlaying():Boolean
{
    for (var i:int = 0; i < effects.length; i++)
    {
        if (effects[i].isPlaying)
            return true;
    }
    return false;
}