Pregunta

Estoy trabajando en un proyecto flexible

Estoy buscando proporcionar alguna funcionalidad de interfaz de usuario usando el mouse. Tengo dos eventos de interfaz de usuario distintos que se logran a través del mouse a) Valor de cambio b) Eliminar objeto

Parece que no tengo suficientes eventos de mouseclick para ambos. Estoy evitando usar el clic derecho, ya que tiene algunas opciones predeterminadas (cuya firma afectará todo el proyecto, no solo esto). He usado el clic del mouse para el valor de cambio: ¿cómo uso el DoubleClick ya que los eventos de un solo clic parecen ser invocados antes?

¿Alguna idea?

¿Fue útil?

Solución

        private var doubleClickOccurred:Boolean = false;
        private var timer:Timer = new Timer(100, 1);

        protected function application1_creationCompleteHandler(event:FlexEvent):void
        {
            myLabel.addEventListener(MouseEvent.CLICK, checkSingleOrDoubleClick);
            myLabel.addEventListener(MouseEvent.DOUBLE_CLICK, checkSingleOrDoubleClick);

            timer.addEventListener(TimerEvent.TIMER_COMPLETE, handleClick);
        }

        private function checkSingleOrDoubleClick(event:MouseEvent):void
        {
            if(event.target == myLabel && event.type == MouseEvent.DOUBLE_CLICK)
            {
                // set the flag and let the timer complete event
                                    // take care of the click handling
                doubleClickOccurred = true;
                trace(" double clicked");

            }
            else if( event.type == MouseEvent.CLICK)
            {
                // start timer to wait till the double click event 
                                    // gets called
                timer.start();
                trace("Starting timer");
            }

        }

        private function handleClick(event:Event):void
        {

            if(doubleClickOccurred)
            {
                // handle double click event
                trace("Yes");
            }
            else
            {

                // handle single click
                trace("No");
            }
            // reset flag for capturing future events
            doubleClickOccurred = false;
        }

    ]]>
</fx:Script>
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>


<s:Label id="myLabel" text="Click Me" doubleClickEnabled="true" />  

Salida: 1) Si A hay un solo clic del mouse en la etiqueta, se invoca el solo clic de inicio de sesión, "no")

2) En caso de hacer doble clic en la etiqueta, se invoca la traza ("sí").

Espero que este código responda a su pregunta sobre cómo manejar un solo clic en los componentes flexibles.

Otros consejos

No puedo decir demasiado sin saber qué estás editando, cuáles son los valores, etc.

Un lenguaje común es mostrar un icono "X", por ejemplo, en el borde de un elemento seleccionado, con clics solo en ese icono de desencadenación de eliminación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top