我在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>
答案 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);