簡體   English   中英

Flex:顯示/隱藏使用HDividedBox划分的VBox

[英]Flex: Show/Hide VBoxes divided using HDividedBox

我有兩個通過HDividedBox划分的VBox。 是否可以通過雙擊HDividedBox來顯示或隱藏其中一個VBox?
我知道使用moveDivider()getDividerAt()方法但是有任何HDividedBox功能可以解決這類問題。

所以,我建議使用自定義組件而不是HDividedBox;)。

特別適合您 - 基於事件的組件,該過程雙擊分隔符(200ms - doubleClick間隔):

<?xml version="1.0" encoding="utf-8"?>
<mx:HDividedBox xmlns:mx="http://www.adobe.com/2006/mxml" initialize="hdividedbox1_initializeHandler(event)">
    <mx:Metadata>
        [Event(name="dividerDoubleClick", type="mx.containers.DividerDblClickEvent")]
    </mx:Metadata>
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.events.DividerEvent;
            import mx.events.FlexEvent;

            private var _timer:Timer = new Timer(200,1);                        

            protected function hdividedbox1_initializeHandler(event:FlexEvent):void{
                this.addEventListener(DividerEvent.DIVIDER_PRESS, divider_press);
            }           
            protected function divider_press(event:DividerEvent):void{
                if(_timer.running){
                    event.preventDefault();
                    event.stopPropagation(); // not sure what of it use

                    dispatchEvent(new DividerDblClickEvent(DividerDblClickEvent.DOUBLE_CLICK, event.dividerIndex));
                }else{
                    _timer.start();
                }
            }           
        ]]>
    </mx:Script>
</mx:HDividedBox>

和自定義事件

package mx.containers
{
    import flash.events.Event;

    public class DividerDblClickEvent extends Event{

        // Define static constant.
        public static const DOUBLE_CLICK:String = "dividerDoubleClick";

        public var dividerIndex:int = -1; // not set

        public function DividerDblClickEvent(type:String, dividerIndex:int = -1, bubbles:Boolean=false, cancelable:Boolean=false){
            super(type, bubbles, cancelable);// Call the constructor of the superclass.

            this.dividerIndex = dividerIndex;// Set the new property.
        }

        // Override the inherited clone() method.
        override public function clone():Event {
            return new DividerDblClickEvent(type, dividerIndex);
        }
    }
}

使用示例:

    <?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*" xmlns:c="mx.containers.*">

    <mx:Script>
        <![CDATA[
            import mx.effects.easing.Cubic;
        ]]>
    </mx:Script>

    <mx:AnimateProperty id="hide" easingFunction="{Cubic.easeIn}" target="{to_hide}" property="width" toValue="0" duration="700" />

<c:HDividedBoxD height="100%" width="100%" dividerDoubleClick="hide.play();" >
    <mx:VBox height="100%" width="50%" backgroundColor="#00FF00">
        <mx:Label text=" some text left 1"/>
        <mx:Label text=" some text left 2"/>
    </mx:VBox>
    <mx:VBox id="to_hide" height="100%" width="50%" backgroundColor="#0000FF">
        <mx:Label text=" some text right 3"/>
        <mx:Label text=" some text right 4"/>       
    </mx:VBox>      
</c:HDividedBoxD>       
</mx:Application>

您可以根據需要修改該模塊。 我要謝謝:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM