2009-01-18 56 views
1

我正在使用一個簡單的flex/AIR應用程序,只有一個mx.TextInput控件和一些按鈕。我沒有使用系統鑲邊。mx上的MouseEvent.MOUSE_DOWN:TextInput

少跌多的MXML是這樣的:

<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> 

使窗口拖動我添加了一個的MouseEvent.MOUSE_DOWN監聽到TitleWindow中:

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

現在的問題是,內部textinput控件似乎繼承了eventlistner,因此您可以鍵入文本,但不能選擇它(原因是按住鼠標觸發NativeWindow.move()函數)。

我錯過了什麼嗎?我希望窗口只有當我的mousedown的TitleWindow中,而不是其他控件拖動..

回答

1

您應該檢查事件對象的屬性target,像這樣:

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

否則,你也搭上從TextInput等內部元素冒泡的mouseDown事件。