如何处理Flex中的竞争效果?

时间:2009-08-26 16:32:03

标签: flex effects

我是Flex的初学者,并且在最困难的时候使用效果。

现在我正在处理在处理竞争效果时遇到的问题。

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

<?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>

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

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

要重现我正在谈论的内容,翻转按钮,然后 rollout ,然后再次翻转。您将看到菜单效果陷入循环。

我如何围绕此进行编码?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

如果您在不应该播放事件时遇到问题,只需将EffectEvent.EFFECT_START监听器添加到您的事件中,然后使用它来停止任何播放事件。 e.g,

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

或类似的东西。