нет, я изменил имя класса и конструктор - иначе он не скомпилируется. Я запускаю ваш код в ADL. evt.preventDefault (); приводит к тому, что событие не происходит, и последующий код не запускается, а удаляет evt.preventDefault (); приводит к тому, что окно не изменяется пропорционально. Кажется, в обоих случаях последующий код игнорируется. то же самое происходит, когда я публикую и запускаю программу как приложение AIR.

риложение запускается с размером сцены 1000 x 500, с соотношением сторон 2: 1. родное окно имеет системный хром, который всегда будет немного выше на несколько пикселей.

Как можно разрешить пропорциональное изменение размера собственного окна, чтобы всегда поддерживать соотношение сторон сцены 2: 1?

следующий код не работает, как я ожидал:

package
{
//Imports
import flash.display.NativeWindow;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.NativeWindowBoundsEvent;

//Class
[SWF(width="1000", height="500", frameRate="60", backgroundColor="#000000")]
public class WindowTest extends Sprite
    {
    //Constants
    private static const ASPECT_RATIO:Number = 2.0; //2:1 Aspect Ratio

    //Constructor
    public function WindowTest()
        {
        init();
        }

    //Initialization
    private function init():void
        {
        stage.scaleMode = StageScaleMode.NO_SCALE;
        stage.align = StageAlign.TOP_LEFT;
        stage.nativeWindow.addEventListener(NativeWindowBoundsEvent.RESIZE, windowResizeEventHandler);
        }

    //Window Resize Event Handler
    private function windowResizeEventHandler(evt:NativeWindowBoundsEvent):void
        {
        evt.currentTarget.width = stage.stageHeight * ASPECT_RATIO;
        }
    }
}

Ответы на вопрос(1)

Ваш ответ на вопрос