Я работаю над простым приложением Flex / AIR с элементом управления mx.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, кажется, наследует список событий, поэтому вы можете вводить текст, но не можете его выбрать (причина, по которой нажатие кнопки мыши запускает функцию NativeWindow.move ()).
Я что-то пропустил ? Я хочу, чтобы окно можно было перетаскивать, только когда я закрываю окно TitleWindow, а не другие элементы управления.





Вы должны проверить атрибут target объекта события, например:
win.addEventListener(MouseEvent.MOUSE_DOWN, function(e:MouseEvent):void {
if (e.target == win)
stage.nativeWindow.startMove();
});
В противном случае вы также поймаете события mouseDown, возникающие из внутренних элементов, таких как TextInput.