2009-01-18 4 views
1

Je travaille sur une application flexible/AIR simple avec juste un contrôle mx.TextInput et un bouton. Je n'utilise pas le chrome du système.MouseEvent.MOUSE_DOWN sur mx: TextInput

moins ou plus MXML est la suivante:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="495" height="316" creationComplete="init()"> 
    <mx:TitleWindow width="481" height="84" layout="absolute" horizontalCenter="0" showCloseButton="false" id="win" top="10"> 
     <mx:Label text="blahhh" id="label1" left="0" top="0"/> 
     <mx:TextInput id="textinput1" left="155" top="0" right="5" editable="true" /> 
     <mx:Label text="expand" right="36" bottom="0" click="toggleState()"/> 
     <mx:Label text="exit" click="stage.nativeWindow.close()" right="0" bottom="0"/> 
    </mx:TitleWindow> 
</mx:Application> 

Pour la fenêtre draggable j'ai ajouté un auditeur MouseEvent.MOUSE_DOWN au TitleWindow:

win.addEventListener(MouseEvent.MOUSE_DOWN, function(e:MouseEvent):void { stage.nativeWindow.startMove();}); 

Le problème est maintenant que la Le contrôle interne de textinput semble hériter de l'eventlistner, donc vous pouvez taper du texte, mais vous ne pouvez pas le sélectionner (parce que le fait de maintenir la souris enfoncée déclenche la fonction NativeWindow.move()).

Ai-je raté quelque chose? Je veux que la fenêtre soit draggable seulement quand je mousedown sur le TitleWindow, pas sur d'autres contrôles ..

Répondre

1

Vous devriez vérifier l'attribut target de l'objet de l'événement, comme celui-ci:

win.addEventListener(MouseEvent.MOUSE_DOWN, function(e:MouseEvent):void { 
    if (e.target == win) 
     stage.nativeWindow.startMove(); 
}); 

Sinon, vous aussi attrapez Les événements mouseDown bouillonnant à partir d'éléments internes tels que TextInput.

Questions connexes