3

我在 OpenFL 2.2.1 应用程序中使用需要在退出时清理的库(即关闭套接字以使其在超时之前不会挂起)。

Alt+F4但是,当我关闭窗口或窗口的关闭按钮时,我找不到任何调用的事件。

如何检测应用程序正在终止,以便清理我的资源?

4

2 回答 2

4

要回答关于 的问题openfl-next,有一个lime.app.Application.onExit事件,它继承自lime.app.ModuleApplication引用存储在实例openfl.display.Stage.application字段中。

因此,该函数的多版本变体如下:

static function setExitHandler(func:Void->Void):Void {
    #if openfl_legacy
    openfl.Lib.current.stage.onQuit = function() {
        func();
        openfl.Lib.close();
    };
    #else
    openfl.Lib.current.stage.application.onExit.add(function(code) {
        func();
    });
    #end
}

然后你会

setExitHandler(function() {
    trace("Quit!");
});
于 2015-12-16T06:48:55.620 回答
0

部分答案是回退到旧版 OpenFL(使用-Dopenfl-legacyor <haxedef name="openfl-legacy" />)。

这个技巧强制编译器使用以前的 API,它启用了Lib.stage.onQuit.

public static function main():Void
{
    // …
    Lib.stage.onQuit = onClose;
    // …
}

private static function onClose()
{
    // …
    // Cleanup of opened resources
    // …
    Lib.close();
}

请务必致电Lib.close(),否则您的窗口将无法关闭!

但是,这并不能回答我对较新的openfl-next.

于 2015-01-03T21:17:02.250 回答