Изменение размера окна приложения AIR при перетаскивании
Итак, я заметил, что Windows 7 имеет тенденцию мешать вам перетаскивать строку заголовка окон за верхнюю часть экрана. Если вы попробуете - в этом случае, с помощью воздушного приложения с перетаскиваемой областью в нижней части окна, позволяющей продвинуть верхнюю часть окна вверх за экран, - оно просто пинает окно достаточно далеко вниз, чтобы строка заголовка находится на вершине того, что он считает "видимой областью".
Одним из решений будет изменение размера окна приложения по мере его перемещения, чтобы строка заголовка всегда находилась там, где этого хотят окна. Как бы вы изменили размер окна при его перетаскивании? Вы бы сделали это так?
dragHitArea.addEventListener(MouseEvent.MOUSE_DOWN, function(e:MouseEvent):void{
stage.nativeWindow.height += 50;
stage.nativeWindow.startMove();
stage.nativeWindow.height -= 50;
});
Видишь, что там происходит? Когда я нажимаю, я делаю startMove()
, который подключается к функции ОС для перетаскивания окна. Я также увеличиваю и уменьшаю высоту окна на 50 пикселей - что не должно дать мне чистого увеличения, верно?
Неправильно - первый ролик.height +=
"выполняется, но".height -=
' после .startMove()
никогда не бежит.
Зачем?
3 ответа
Я разработал аналогичное приложение с всплывающими окнами, и, столкнувшись с некоторыми проблемами, я решил избавиться от NativeWindows и сделать все в одном окне без хрома размером с экран. Я изменял размер окна до размера экрана каждый раз, когда запускалось приложение. Я разработал собственную строку заголовка с кнопками и всем остальным, и главным окном виджета был фактически Canvas, который я перетаскивал в окне приложения. То же самое с всплывающими меню и окнами: они были просто компонентами на основе Canvas. У меня не было проблем с перетаскиванием компонента за пределы видимой области окна, потому что он был таким же, как и экран.
Но, как я уже сказал, может быть уже поздно делать такие радикальные изменения.
Ты пытался заглянуть в NativeWindowBoundsEvent.MOVING
событие?
stage.nativeWindow.addEventListener (NativeWindowBoundsEvent.MOVING, windowMove); приватная функция windowMove(e:NativeWindowBoundsEvent): void { трассировки (e.beforeBounds); трассировки (e.afterBounds); // изменить размер окна по мере необходимости на основе этих }
ссылки: Google, который привел меня к http://lowpitch.com/blog/nativewindow-using-air-windows-with-actionscript-part-3-of-3/ который привел меня к http://livedocs.adobe.com/flex/3/langref/flash/events/NativeWindowBoundsEvent.html
NativeWindowBoundsEvent.MOVING
увольняется до того, как позиция действительно изменится, тогда как NativeWindowBoundsEvent.MOVE
уволен после того, как позиция изменилась, если вам интересно. Таким образом, вам нужно событие MOVING
(кстати, у меня было искушение просто сказать "ты не можешь", не проводя никаких исследований для награды… но чувствовал, что это будет означать)
Похоже, это был бы забавный эффект и не все стандартное поведение окна. Почему вы чувствуете необходимость что-либо сделать? Почему бы не позволить пользователю изменить размер окна самостоятельно, если это необходимо?