as3如何创建DropDownList(无XML)

时间:2012-11-16 11:23:49

标签: actionscript-3

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

我真的很抱歉这个问题,但我真的没有找到任何写在as3。

我已经检查了adobe提供的那个是它的页面adobe reference for DropDownList,但该示例使用的是XML。

3 个答案:

答案 0 :(得分:1)

基于纯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;
        }
    }
}

答案 1 :(得分:0)

我没有看到您提到的示例中使用的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>

答案 2 :(得分:0)

如果您不想使用MXML,可以通过代码执行此操作:

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