Изменение размера окна приложения AIR при перетаскивании - PullRequest
3 голосов
/ 03 апреля 2010

Итак, я заметил, что 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 ]

0 голосов
/ 13 апреля 2010

Вы пытались заглянуть в событие NativeWindowBoundsEvent.MOVING?

stage.nativeWindow.addEventListener(NativeWindowBoundsEvent.MOVING, windowMove);
private function windowMove(e:NativeWindowBoundsEvent) : void {
    trace(e.beforeBounds);
    trace(e.afterBounds);
    // resize window as needed based on these
}

ссылки: 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

(кстати, у меня было искушение просто сказать «ты не можешь», не проводя никаких исследований для награды ... но чувствовал, что это будет означать)

0 голосов
/ 01 ноября 2010

Я разработал подобное приложение с всплывающими окнами, и, столкнувшись с некоторыми проблемами, я решил избавиться от NativeWindows и сделать все в одном окне без хрома размером с экран. Я изменял размер окна до размера экрана каждый раз, когда запускалось приложение. Я разработал собственную строку заголовка с кнопками и всем, и главным окном виджета был фактически Canvas, который я перетаскивал в окне приложения. То же самое с всплывающими меню и окнами: они были просто компонентами, основанными на Canvas. У меня не было проблем с перетаскиванием компонента за пределы видимой области окна, поскольку он был таким же, как и экран.

Но, как я уже сказал, может быть уже поздно делать такие радикальные изменения.

0 голосов
/ 05 апреля 2010

Кажется, что это будет забавный эффект и не все стандартное поведение окна. Почему вы чувствуете необходимость что-либо сделать? Почему бы не позволить пользователю изменить размер окна самостоятельно, если это необходимо?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...