0

我是 Flex 的初学者,并且最难的是使用 Effects。

现在我正在处理处理竞争效果时面临的问题。

请看下面的代码。我基本上创建了一个简短的可重复测试样本,它显示了我面临的问题:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="400">

    <mx:Script>
        <![CDATA[
            private function showmenu():void
            {Menu.visible= true;
            }
            private function hidemenu():void
            {Menu.visible= false;
            }
        ]]>
    </mx:Script>

    <mx:WipeDown id="wipedown" duration="900"/>
    <mx:WipeUp  id="wipeUp" duration="900" />



<mx:Canvas id="main"  width="400" height="400"
    rollOver="showmenu();" rollOut="hidemenu();">
    <mx:Button label="Show Menu" 
         x="100" y="20">
        </mx:Button>

        <mx:Canvas id="Menu" visible="false"
        width="100" height="200"
        backgroundColor="#B8B8B8" x="96" y="35"
        showEffect="{wipedown}" hideEffect="{wipeUp}">

        </mx:Canvas>

</mx:Canvas>    



</mx:Application>

这基本上显示了一个按钮,当您在按钮上滚动时,将显示另一个画布,这将是一种菜单。当您推出时,菜单会消失。

菜单也有一些效果,如果你试图在另一个效果结束之前启动一个效果,它会进入一个无限循环。

要重现我正在谈论的内容,请滚动按钮,然后滚动,然后再次快速滚动。您将看到菜单效果陷入循环。

我该如何解决这个问题?

4

2 回答 2

0

我无法重现您的问题。无论我在何处/何时将鼠标移入或移出,它都不会进入循环。请注意,我使用的是 Flex 3.2。也许这取决于您使用的是哪个版本?

顺便说一句,您的代码与您的描述不完全匹配:您在画布上有 rollOver 和 rollOut 事件,其中还包含您正在显示和隐藏的画布。只是一个猜测,但我可以想象效果本身实际上会导致您的鼠标在画布上或不再在画布上,触发翻转/滚动,然后再次导致鼠标移入/移出......那是无限的吗?你遇到的循环?

于 2009-08-27T11:51:38.080 回答
0

如果您在播放不应该播放的事件时遇到问题,只需将 EffectEvent.EFFECT_START 侦听器添加到您的事件并使用它来停止任何正在播放的事件。例如,

function _handleEffectStart(e:EffectEvent):void {
  if(e.target == wipedown) {
    wipeup.stop();
  } else {
    wipedown.stop();
  }
}

或类似的东西。

于 2009-08-31T08:55:25.313 回答