0

我在 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>

4

1 回答 1

0

正如 Mahesh 在他的评论中指出的那样,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);
于 2012-10-05T14:24:29.630 回答