Adobe Air - сохранить размер и положение окна - PullRequest
1 голос
/ 07 марта 2012

Я пытаюсь написать файл XML, чтобы сохранить в нем позицию и размер окна приложения.Я сталкиваюсь с этой ошибкой:

TypeError: Ошибка # 1010: термин не определен и не имеет свойств.MainTimeline / setupWindow ()

AS:

import flash.display.NativeWindowInitOptions;
import flash.display.NativeWindowSystemChrome;
import flash.display.NativeWindowType;
import flash.display.NativeWindow;


function setupWindow(e:Event = null):void
{
    gotoLastPosition();
    this.nativeWindow.addEventListener( Event.CLOSING, saveAppPosition );
}

function saveAppPosition(e:Event = null):void
{
    var xml:XML = new XML('<position x="' + this.nativeWindow.x + '" y="' + this.nativeWindow.y + '" width="' + this.width + '" height="' + this.height + '"/>');

    var f:File = File.applicationStorageDirectory.resolvePath("appPosition.xml");
    var s:FileStream = new FileStream();
    try
    {
        s.open(f,flash.filesystem.FileMode.WRITE);
        s.writeUTFBytes(xml.toXMLString());
    }
    catch (e:Error)
    {
        //trace(error( e ));
    }
    finally
    {
        s.close();
    }
}

function gotoLastPosition():void
{
    var f:File = File.applicationStorageDirectory.resolvePath("appPosition.xml");
    if (f.exists)
    {
        var s:FileStream = new FileStream();
        try
        {
            s.open(f,flash.filesystem.FileMode.READ);
            var xml:XML = XML(s.readUTFBytes(s.bytesAvailable));

            this.nativeWindow.x = xml. @ x;
            this.nativeWindow.y = xml. @ y;
            this.width = xml. @ width;
            this.height = xml. @ height;
        }
        finally
        {
            s.close();
        }
    }
}


setupWindow()

Что не так с кодом?

1 Ответ

4 голосов
/ 08 марта 2012

Причиной ошибки является вызов метода setupWindow () , а не saveAppPosition . Он выполняется, как только ваш файл обработан, и nativeWindow , вероятно, еще не готов.

Переместите setupWindow () вызов в метод (например, обработчик FlexEvent.CREATION_COMPLETE) и попробуйте снова.

Надеюсь, это поможет.

...