我正在使用一个简单的flex / AIR应用程序,只有一个mx.TextInput控件和一些按钮。我没有使用系统chrome。
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>
为了使窗口可拖动,我已经向TitleWIndow添加了一个MouseEvent.MOUSE_DOWN侦听器:
win.addEventListener(MouseEvent.MOUSE_DOWN, function(e:MouseEvent):void { stage.nativeWindow.startMove();});
现在的问题是内部textinput控件似乎继承了eventlistner,所以你可以输入text,但你不能选择它(因为按住鼠标触发NativeWindow.move()函数)。
我错过了什么吗?我希望窗口只有当我在TitleWindow上出现时才可以拖动,而不是在其他控件上。
答案 0 :(得分:1)
您应该检查事件对象的target
属性,如下所示:
win.addEventListener(MouseEvent.MOUSE_DOWN, function(e:MouseEvent):void {
if (e.target == win)
stage.nativeWindow.startMove();
});
否则,您还会捕获从内部元素(如TextInput。)中冒出的mouseDown事件。