移动标注按钮后的下拉列表



Flex Actionscript question.

我有一个在屏幕上移动的标注按钮。当我打开下拉菜单(通过单击)时,它会保持在屏幕上的相同位置(只有箭头在移动)。它不遵循标注按钮的位置

我希望此下拉列表在标注按钮移动时跟随其位置(就像在移动时再次单击按钮时一样)。

我试图调度一个MouseEvent.CLICK。它不起作用。还尝试打开,然后再次关闭下拉列表,动作脚本唱 closeDropDown() 和 openDropDown()。没有变化。

谢谢

示例代码(从 creationComplete 调用 init() ):

    creationComplete="init();">
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
    <![CDATA[
        import flash.events.MouseEvent;
        import mx.events.DropdownEvent;
        private function init():void {
            var minuteTimer:Timer = new Timer(1*1000);
            minuteTimer.addEventListener(TimerEvent.TIMER, updateCalloutPosition);
            // starts the timer ticking
            minuteTimer.start();                
        }
        private function updateCalloutPosition(event:Event):void {
            myButton.closeDropDown();
            myButton.x = this.width * Math.random();
            myButton.y = this.height * Math.random();
//              myButton.openDropDown();
            myButton.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
        }
        protected function myButton_clickHandler(event:MouseEvent):void
        {
            if (myButton.isPopUp) {
                myButton.closeDropDown();
            }
            else {
                myButton.openDropDown();
            }
        }
    ]]>
</fx:Script>
<s:CalloutButton id="myButton" click="myButton_clickHandler(event)">
</s:CalloutButton>

我尝试了一些解决方法,但是如果可以实现,则 openDuration 和 closeDuration 不适用于 DropDownList,而不是以下代码可能会对您有所帮助。希望以下代码对您有所帮助。

<?xml version="1.0" encoding="utf-8"?>
<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/mx" minWidth="955" minHeight="600"
               creationComplete="init()">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
        <s:ArrayCollection id="ac">
            <fx:String>AK</fx:String>
            <fx:String>AL</fx:String>
            <fx:String>AR</fx:String>
        </s:ArrayCollection>
    </fx:Declarations>
    <fx:Style>
        @namespace s "library://ns.adobe.com/flex/spark";
        @namespace mx "library://ns.adobe.com/flex/halo";
        s|DropDownList {
            openDuration: 0;
            closeDuration: 0;
        }
    </fx:Style>
    <fx:Script>
        <![CDATA[
            import flash.events.MouseEvent;
            import spark.components.supportClasses.DropDownListBase;
            import spark.components.supportClasses.TextBase;
            import spark.events.DropDownEvent;
            import spark.skins.spark.DropDownListSkin;
            import spark.utils.LabelUtil;
            private var storeVisible:Boolean = false;
            private function init():void {
                var minuteTimer:Timer = new Timer(1*1000);
                minuteTimer.addEventListener(TimerEvent.TIMER, updateCalloutPosition);
                minuteTimer.start();                
            }
            private function updateCalloutPosition(event:Event = null):void {
                myButton.x = this.width * Math.random();
                myButton.y = this.height * Math.random();
                if(myButton.isDropDownOpen)
                {
                    myButton.closeDropDown(false);
                    storeVisible = true;
                }
            }
            private function updateComp():void
            {
                if(storeVisible)
                {
                    myButton.openDropDown();
                    storeVisible = false;
                }
            }
        ]]>
    </fx:Script>
    <s:DropDownList id="myButton"  selectedIndex="0" dataProvider="{ac}" updateComplete="updateComp()"/> 
</s:Application>

相关内容

  • 没有找到相关文章

最新更新