Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flash Приложения: AIR, Zinc и тд. (http://www.flasher.ru/forum/forumdisplay.php?f=94)
-   -   Ресайз окна AIR, nativeWindow.resize не работает (http://www.flasher.ru/forum/showthread.php?t=152780)

KonstantoS 23.03.2011 01:00

Ресайз окна AIR, nativeWindow.resize не работает
 
Мне подсказали как убрать интерфейс виндовс, я добавил кнопочки с помощью хелпа.
Код AS3:

function Move(event:MouseEvent):void 
        {
            this.stage.nativeWindow.startMove();
        }
 
stage.addEventListener(MouseEvent.MOUSE_DOWN, Move);

пример из хелпа не работает(( (фигнюшку чтоб тянуть добавил "resizeHandle")
Код AS3:

function onStartResize(event:MouseEvent):void 
        {
            this.stage.nativeWindow.startResize(NativeWindowResize.BOTTOM_RIGHT);
        }
resizeHandle.addEventListener(MouseEvent.MOUSE_DOWN, onStartResize);

Подскажите незнающему. Заранее, спасибо.

_sestra_ 23.03.2011 11:03

Я обычно использую:

Код AS3:

stage.nativeWindow.width = value;
stage.nativeWindow.height = value;
stage.nativeWindow.x = value;
stage.nativeWindow.y = value;
//ширина,высота экрана - Capabilities.screenResolutionX,Capabilities.screenResolutionY


KonstantoS 23.03.2011 13:22

Обожаю метод тыка....:D

Код AS3:

function Resize(event:MouseEvent):void 
        {
            stage.nativeWindow.startResize(NativeWindowResize.BOTTOM_RIGHT);
        }
 
resizeBRButton.addEventListener(MouseEvent.CLICK, Resize);

Конечно не совсем то что я хотел, но все же. Надо кликнуть, отпустить, потянуть (в данном случае вниз вправо), и снова кликнуть где либо при завершении. :yahoo:

З.Ы. Тему закройте пожалуйста)

alexcon314 23.03.2011 14:15

MouseEvent.CLICK замените на MouseEvent.MOUSE_DOWN. Тогда нормальный ресайз выйдет.

KonstantoS 23.03.2011 22:45

Спасибо, но MOUSE_DOWN как раз и не работает.

Вот мой полный скрипт. Это первая работа, так что если будут ошибки скажите пожалуйста.
Код AS3:

var $score1 = 0,$score2 = 0;
var t1:String,t2:String,t3:String,t4:String;
 
//Счет первой команды
function score1()
{
        if($score1 + $score2 < 15){
        $score1 = $score1+1;
        }
        return $score1;
}
//Счет второй команды
function score2()
{
        if($score2 + $score1 < 15){
        $score2 = $score2+1;
        }
        return $score2;
}
 
 
//События клавиатуры
function key(event:KeyboardEvent):void
{
        if(event.keyCode == Keyboard.LEFT){
        s1.text = (score1());
                if(($score1 + $score2 == 15) && ($score1 > $score2)){
                        w1.text = "WIN";
                }
                else if(($score1 + $score2 == 15) && ($score1 < $score2)){
                        w2.text = "WIN";
                }
        }
        if(event.keyCode == Keyboard.RIGHT){
        s2.text = (score2());
                if(($score1 + $score2 == 15) && ($score1 > $score2)){
                        w1.text = "WIN";
                }
                else if(($score1 + $score2 == 15) && ($score1 < $score2)){
                        w2.text = "WIN";
                }
        }
}
stage.addEventListener(KeyboardEvent.KEY_DOWN,key);
 
//Резет программы
function Restart(event:KeyboardEvent):void
        {
                        if(event.keyCode == 82){
                                $score1 = 0;
                                $score2 = 0;
                                s1.text = "0";
                                s2.text = "0";
                                w1.text = "";
                                w2.text = "";
 
                        }
//Меняю названия команд местами
                        if((event.keyCode == 84)&&($score1 + $score2 == 15)){
                        t1 = Team1.text;
                        t2 = Team2.text;
                        t3 = t1;
                        t4 = t2;
                        Team1.text = t4;
                        Team2.text = t3;
                        }
        }
stage.addEventListener(KeyboardEvent.KEY_DOWN, Restart);
 
 
//Закрыть окно
function closeW(e:MouseEvent):void
        {
                NativeApplication.nativeApplication.exit();
        }
closeBtn.addEventListener(MouseEvent.CLICK, closeW);
 
 
//Переместить
function Move(event:MouseEvent):void
        {
            this.stage.nativeWindow.startMove();
        }
 
stage.addEventListener(MouseEvent.MOUSE_DOWN, Move);
 
 
//Минимизировать
function Minimize(event:MouseEvent):void
        {
            this.stage.nativeWindow.minimize();
        }
minBtn.addEventListener(MouseEvent.MOUSE_DOWN, Minimize);
 
//Восстановить
function Restore(event:MouseEvent):void
        {
            this.stage.nativeWindow.restore();
        }
restoreBtn.addEventListener(MouseEvent.MOUSE_DOWN, Restore);
 
//Размеры
function rsz(event:MouseEvent):void
        {
            stage.nativeWindow.startResize(NativeWindowResize.BOTTOM_RIGHT);
        }
 
resizeBRButton.addEventListener(MouseEvent.CLICK, rsz);

З.Ы. Простите если скрипт слишком длинный (правила читал, но не знаю где может таится ошибка)

alexcon314 24.03.2011 10:10

Все дело в том, что вы на событие MOUSE_DOWN подписались у stage:
Код:

//Переместить
function Move(event:MouseEvent):void
        {
            this.stage.nativeWindow.startMove();
        }
 
stage.addEventListener(MouseEvent.MOUSE_DOWN, Move);

Потому у вас глючит, когда вы на то же событие подписываете кнопку ресайза:
Код:

//Размеры
function rsz(event:MouseEvent):void
        {
            stage.nativeWindow.startResize(NativeWindowResize.BOTTOM_RIGHT);
        }
 
resizeBRButton.addEventListener(MouseEvent.MOUSE_DOWN, rsz);

По-хорошему, нужно сделать отдельный спрайт, который будет выполнять роль заголовка вашего окна (Title Bar), и таскать окно, взявшись за него, а не за любую точку в окне, чего вы добились с помощью
Код:

stage.addEventListener(MouseEvent.MOUSE_DOWN, Move);
. Подозреваю, что титлбар у вас даже есть в наличии.
Ну, например так:
Код:

package
{
        import flash.desktop.NativeApplication;
        import flash.display.Graphics;
        import flash.display.Sprite;
        import flash.events.MouseEvent;
        [SWF(width="800", height="600")]
        public class Main extends Sprite
        {
                public function Main():void
                {
                        // рисуем титлбар помещаем его в верхнюю часть окна
                        var titleBar:Sprite = new Sprite();
                        titleBar.graphics.beginFill(0xcdcdcd);
                        titleBar.graphics.drawRect(0, 0, stage.stageWidth, 30);
                        titleBar.graphics.endFill();
                        addChild(titleBar);
                        titleBar.addEventListener(MouseEvent.MOUSE_DOWN, move);
                        // рисуем и располагаем кнопки управления окном
                        var btn:Sprite = getNCButton();
                        btn.x = 600; btn.y = 10;
                        addChild(btn);
                        btn.addEventListener(MouseEvent.CLICK, close);// закрыть
                       
                        btn = getNCButton();
                        btn.x = 650; btn.y = 10;
                        addChild(btn);
                        btn.addEventListener(MouseEvent.CLICK, min);// свернуть
                       
                        btn = getNCButton();
                        btn.x = 700; btn.y = 10;
                        addChild(btn);
                        btn.addEventListener(MouseEvent.CLICK, max);// развернуть
                       
                        btn = getNCButton();
                        btn.x = 780; btn.y = 580;
                        addChild(btn);
                        btn.addEventListener(MouseEvent.MOUSE_DOWN, resize);// изменить размер
                }
                private function getNCButton():Sprite
                {
                        var spr:Sprite = new Sprite()
                        var gr:Graphics = spr.graphics;
                        gr.beginFill(0x00f000);
                        gr.drawRect(0, 0, 40, 20);
                        gr.endFill();
                        return spr;
                }
                private function close(e:MouseEvent):void
                {
                        NativeApplication.nativeApplication.exit();
                }
                private function min(e:MouseEvent):void
                {
                        this.stage.nativeWindow.minimize();
                }
                private function max(e:MouseEvent):void
                {
                        this.stage.nativeWindow.maximize();
                }
                private function resize(e:MouseEvent):void
                {
                        this.stage.nativeWindow.startResize();
                }
                private function move(e:MouseEvent):void
        {
            this.stage.nativeWindow.startMove();
        }
        }
       
}



Часовой пояс GMT +4, время: 02:37.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.