好的我試圖做到這一點,當用戶啓動我的空氣應用程序時,它會自行定位並將其大小設置爲上次打開時的大小。AIR:保存應用程序的位置和大小
這裏是我的代碼:
private function init():void
{
gotoLastPosition();
this.nativeWindow.addEventListener(Event.CLOSING, saveAppPosition);
}
private 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());
s.close();
}
catch(e:Error){}
}
private function gotoLastPosition():void
{
var f:File = File.applicationStorageDirectory.resolvePath("appPosition.xml");
if(f.exists)
{
var s:FileStream = new FileStream();
s.open(f,flash.filesystem.FileMode.READ);
var xml:XML = XML(s.readUTFBytes(s.bytesAvailable));
this.nativeWindow.x = [email protected];
this.nativeWindow.y = [email protected];
this.width = [email protected];
this.height = [email protected];
}
}
這並不工作,但我從用戶的抱怨,有時當他們啓動應用程序,它是沒有被發現(關閉屏幕),他們可以在那裏右鍵單擊任務欄項並最大化它以恢復它,但這不應該是必需的。
我只能假設這個問題是由於我試圖保存應用程序的位置。我不知道可能會出現什麼問題,或者我該如何解決這個問題?
也許有一種方法可以告訴應用程序在定位後是否離開屏幕,如果是這樣,它會在屏幕上移動嗎?不知道我該如何做到這一點?
任何想法?
謝謝!
僅當用戶有多個顯示器,或者他們使用插入不同分辨率的不同投影機的筆記本電腦時,或者在同一用戶的單顯示器情況下,這種情況纔會發生? – Robusto 2010-02-25 15:50:12
我不確定,我不這麼認爲,1位用戶正在使用他的筆記本電腦,並且在度假時,很確定它沒有連接到投影機。我想知道現在是否可能xml文件以某種方式被損壞。 – 2010-02-25 16:00:46