Flex 4 Slidedown效果

时间:2010-11-27 09:16:43

标签: actionscript-3 flex4

我正在尝试重新创建我在another site上找到的效果。当您将鼠标悬停在灰色标题区域上方时,会显示一个向下滑动的菜单。

我遇到的问题是,当我将鼠标悬停在该区域上时,hiddenNav容器会立即出现并且没有很好的移动效果。

这是我目前的代码

<?xml version="1.0"?>
<!-- Simple example to demonstrate the WipeDown effect. -->
<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/halo" xmlns:mx1="library://ns.adobe.com/flex/mx" currentState="normalMenu">
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>

<fx:Script>
    <![CDATA[
        protected function expandSubNavigation(event:MouseEvent):void
        {
            currentState=(currentState == 'hiddenMenu') ? 'normalMenu' : 'hiddenMenu';
        }       
    ]]>
</fx:Script>


<s:states>
    <s:State name="normalMenu"/>
    <s:State name="hiddenMenu"/>
</s:states>


<s:transitions>
    <s:Transition id="myTransition" fromState="*" toState="*" >
        <s:Parallel id="t1" targets="{[visibleNav,hiddenNav]}">
            <s:Move  duration="600"/>
        </s:Parallel>
    </s:Transition>
</s:transitions>

<s:BorderContainer x="0" y="0" width="100%" mouseOver="expandSubNavigation(event)" height="32" borderVisible="false" backgroundColor="#848484" >
    <s:Label x="30" text="Lorem Ipsum" verticalCenter="0" color="#FFFFFF"/>
</s:BorderContainer>


<s:HGroup x="0" y="33" id="visibleNav" width="100%" height="24" gap="0">
    <s:BorderContainer width="200" height="100%" borderVisible="false" backgroundColor="#227258" >
        <s:Label text="Ipsum: " verticalCenter="0" left="10" color="#FFFFFF" fontSize="10"/>
    </s:BorderContainer>        
    <s:BorderContainer width="100%" height="24" borderVisible="false" backgroundColor="#005C3F" >
    </s:BorderContainer>
</s:HGroup>

<s:Group id="hiddenNav" alpha="0.9" x="0" y="0" y.hiddenMenu="33" includeIn="hiddenMenu" width="100%" height="50">
    <s:BorderContainer width="100%" height="25" borderVisible="false" backgroundColor="#00110B" backgroundAlpha="0.9" y="0" x="0">
        <s:Label text="Lorem Ipsum" x="0" y="0" color="0xFFFFFF"/>
    </s:BorderContainer>
    <s:BorderContainer width="100%" height="25" borderVisible="false" backgroundAlpha="0.9" backgroundColor="#333333" left="0" borderAlpha="0.9" y="25">
    </s:BorderContainer>
</s:Group>
    </s:Application>

1 个答案:

答案 0 :(得分:2)

问题出现在targets属性中 - 在那里提到Group是没用的,这里修复了你的代码:

<?xml version="1.0" encoding="utf-8"?>
<!-- Simple example to demonstrate the WipeDown effect. -->
<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/halo" xmlns:mx1="library://ns.adobe.com/flex/mx" currentState="normalMenu">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>

    <s:states>
        <s:State name="normalMenu"/>
        <s:State name="hiddenMenu"/>
    </s:states>

    <s:transitions>
        <s:Transition id="myTransition1" fromState="*" toState="*" >
            <s:Sequence id="t1" targets="{[o0, o1]}">
                <s:Move duration="600"/>
            </s:Sequence >
        </s:Transition>
    </s:transitions>

    <s:HGroup x="0" y="33" id="visibleNav" width="100%" height="24" gap="0">
        <s:BorderContainer width="20%" height="100%" borderVisible="false" backgroundColor="#0000ff" >
            <s:Label text="HGroup Ipsum: " verticalCenter="0" left="10" color="#FFFFFF" fontSize="10"/>
        </s:BorderContainer>        
        <s:BorderContainer width="100%" height="24" borderVisible="false" backgroundColor="#005C3F" >
        </s:BorderContainer>
    </s:HGroup>

    <s:Group id="hiddenNav" alpha="0.9" x="0" y="0" width="100%" mouseOut="if(event.stageY>60)currentState='normalMenu'">
        <s:BorderContainer id="o0" width="100%" height="25" borderVisible="false" backgroundColor="#00110B" y="-20" x="0" y.hiddenMenu="33" y.normalMenu="-20">
            <s:Label text="hiddenNav Lorem Ipsum" x="0" y="0" color="0xFFFFFF"/>
        </s:BorderContainer>
        <s:BorderContainer id="o1" width="100%" height="25" borderVisible="false" backgroundColor="#ffff00" y="5" y.hiddenMenu="58" y.normalMenu="5">
        </s:BorderContainer>
    </s:Group>

    <s:BorderContainer x="0" y="0" width="100%" mouseOver="currentState='hiddenMenu'" height="32" borderVisible="false" backgroundColor="#848484" >
        <s:Label x="30" text="BorderContainer Lorem Ipsum" verticalCenter="0" color="#FFFFFF"/>
    </s:BorderContainer>
</s:Application>