as3 如何创建下拉列表(无 XML)



我是AS3的新手,我正在做一些简单的UI。我想创建一个包含几个选项的下拉列表。我已经阅读了很多教程,其中有数百行用于制作下拉列表。真?一百行下拉列表?我只想创建一种简单的HTML SELECT。如果您知道一个教程也可以工作。

对于这种问题,我真的很抱歉,但我真的找不到任何用as3写的。

我已经检查了Adobe提供的页面DropDownList的页面Adobe参考,但该示例使用的是XML。

基于 AS3 的纯类:

package
{
    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.events.TimerEvent;
    import flash.utils.Timer;
    import com.greensock.*;
    import com.greensock.easing.*;
    public class MouseOverMenu extends MovieClip {
        public var _sMouseOver:MovieClip;
        public var _sMenu:MovieClip;
        private var _menuTimer:Timer;
        private var _menuOpen:Boolean = false;
        public function MouseOverMenu():void {
            addEventListener(Event.ADDED_TO_STAGE, init, false, 0, true);
        }
        private function init(e:Event):void {
            _sMouseOver.buttonMode = true;
            _sMouseOver.addEventListener(MouseEvent.MOUSE_OVER, showMenu, false, 0, true);
            _sMouseOver.addEventListener(MouseEvent.MOUSE_OUT, startClose, false, 0, true);
            _sMouseOver.addEventListener(MouseEvent.MOUSE_OVER, cancelClose, false, 0, true);
            _menuTimer = new Timer( 50 );
            _menuTimer.addEventListener ( TimerEvent.TIMER, doCloseMenu );
            _sMenu.visible = false;
            _sMenu.alpha = 0;
            _sMenu.addEventListener(MouseEvent.MOUSE_OUT, startClose, false, 0, true);
            _sMenu.addEventListener(MouseEvent.MOUSE_OVER, cancelClose, false, 0, true);
        }
        private function showMenu(e:MouseEvent):void {
            _menuOpen = true;
            _sMenu.visible = true;
            TweenLite.to(_sMenu, .5, {y:73, alpha:1});
        }
        private function startClose ( e:Event ):void {
            //trace('startClose ' + e.target);
            _menuTimer.start();
        }
        private function cancelClose ( e:Event ):void {
            //trace('cancelClose ' + e.target);
            _menuTimer.stop();
        }
        private function doCloseMenu ( e:Event ) {
            closeMenu();
        }
        private function closeMenu ():void {
            if ( _menuOpen ) {
                TweenLite.to(_sMenu, .5, {y:50, alpha:0, onComplete: hideMenu});
            }
            _menuTimer.stop();
            _menuOpen = false;
        }
        private function hideMenu():void {
            _sMenu.visible = false;
        }
    }
}

我没有看到您提到的示例中使用了XML,无论如何,这是Flex中使用arrayCollection的Dropdownlist的简单代码。

 <?xml version="1.0" encoding="utf-8"?>
    <!-- http://blog.flexexamples.com/2009/03/07/using-the-dropdownlist-in-flex-gumbo/ -->
    <s:Application name="Spark_DropDownList_test"
            xmlns:fx="http://ns.adobe.com/mxml/2009"
            xmlns:s="library://ns.adobe.com/flex/spark"
            xmlns:mx="library://ns.adobe.com/flex/mx">
        <s:layout>
            <s:BasicLayout />
        </s:layout>
        <s:DropDownList id="dropDownLst"
                requireSelection="true"
                horizontalCenter="0" top="20">
            <s:dataProvider>
                <s:ArrayList source="[The,quick,brown,fox,jumps,over,the,lazy,dog]" />
            </s:dataProvider>
        </s:DropDownList>
    </s:Application>

如果你不想使用MXML,你可以通过代码来完成:

yourDropDownInstance.dataProvider = new ArrayCollection(["The","quick",
                                                         "brown","fox",
                                                         "jumps","over",
                                                         "the","lazy","dog"]);

最新更新