我有一个使用 FlashDevelop 创建的单窗口 AIR 应用程序,并希望它在用户关闭它时记住窗口的大小和位置。当它重新打开时,它会调整大小并转到该位置。
找到了一个可以执行此操作的 AS3 脚本,但我的应用程序没有 AS3。只有一个html和js文件。
当窗口关闭时,它应该保存窗口的状态,当它打开时,它应该加载保存的状态并调整大小/移动到保存的状态。这是我在 $(document).ready 上的内容
var width = screen.width;
var height = screen.height;
var p=new DOMParser();
var xml,x,y,windowWidth,windowHeight;
var f = window.runtime.flash.filesystem.File
.applicationDirectory.resolvePath("appPosition.xml");
if (f.exists){
var s = new window.runtime.flash.filesystem.FileStream();
try {
s.open(f,window.runtime.flash.filesystem.FileMode.READ);
xml=p.parseFromString(s.readUTFBytes(s.bytesAvailable),"text/xml");
x = parseInt(xml.childNodes[0].getAttribute("x"),10);
y = parseInt(xml.childNodes[0].getAttribute("y"),10);
windowWidth = parseInt(xml.childNodes[0].getAttribute("width"),10);
windowHeight =
parseInt(xml.childNodes[0].getAttribute("height"),10);
x = (x >= width) ? 20 : x;
y = (y >= height) ? 0 : y;
x = (x <= (width*-1)) ? 20 : x;
y = (y <= (height*-1)) ? 0 : y;
if (windowWidth >= (width-60) && windowHeight >= (height-60)) {
//the x and y are not set
window.runtime.flash.display.NativeWindow.x =20;
window.runtime.flash.display.NativeWindow.y = 0;
window.resizeTo(900,600);
// not yet sure if the following works
window.runtime.flash.display.NativeWindow.maximize();
}else{
// x and y don't do anything here either
window.runtime.flash.display.NativeWindow.x = x;
window.runtime.trace("sitting window x:",x);
window.runtime.flash.display.NativeWindow.y = y;
window.resizeTo(windowWidth,windowHeight);
}
}catch (e) {
window.runtime.trace(e.message);
}finally{
s.close();
}
return;
当窗口关闭时,我希望我的函数保存窗口的状态,但无论我尝试什么函数都不会被调用:$(window).on("close"... 或 window.onclose= 或 <document onunluoad=. .. 冗长的指南似乎没有关于如何获取当前窗口的任何内容: http ://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/scripting/pdfs/ javascript_tools_guide.pdf 涵盖了创建窗口,一旦拥有它就可以操作它,但我从不创建窗口,application.xml 看起来像这样:
...
<initialWindow>
<title>App Title</title>
<content>main.html</content>
...
所以我有以下问题:
- 如何将事件侦听器添加到当前窗口?
- 加载时如何设置当前窗口 x 和 y?
- 我可以在窗口可见之前调整和移动窗口的大小吗,因为它现在似乎正在调整大小,但看起来有点片状,因为它最初以默认大小打开,然后重新调整为以前存储的值。