Flex效果不一致

时间:2012-10-05 13:57:22

标签: flex flash-builder flex4.5 effects

我在Flex中创建了一个简单的效果,代码如下,但它没有正确执行...当我滚动图标时,大部分时间效果播放,当我滚动图像效果应该播放相反,但很少...

我的代码或逻辑是否不正确?仅供参考 - 我正在使用Flash Builder 4.6。

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
           xmlns:s="library://ns.adobe.com/flex/spark" 
           xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
        <s:Move id="detail_fade" target="{detail_panel}" xFrom="218" xTo="400" />
    </fx:Declarations>

    <s:Panel id="detail_panel" x="218" y="10" width="728" height="580" title="something">
    </s:Panel>

    <s:VGroup x="7" y="5" width="200" height="200">
        <s:Image source="images/Airfield Icon.jpg"
            rollOver="detail_fade.play()" rollOut="detail_fade.reverse()"/>
</s:VGroup>

1 个答案:

答案 0 :(得分:0)

正如马赫什在评论中指出的那样,reverse()只能扭转实际发挥作用的效果。这就是为什么你有时只看到它发生的事情:即在效果结束之前你足够快速地滚动。

您应该使用:

detail_fade.play(null, true);

play方法的第一个参数是效果的目标数组。由于你已经给它一个目标,你不需要再次传递它(这就是为什么它说null)。
第二个参数是一个布尔值,告诉效果如果设置为true则反向播放。默认情况下,它当然是false


现在,您可能会注意到,当您快速roll_out时,效果将跳到最后并从那里开始向另一个方向播放。

这可以修复如下:

if (detail_fade.isPlaying) detail_fade.reverse();
else detail_fade.play(null, true);