在新 window 中打开 SWF 文件

Opening an SWF file in a new window

我的桌面 Flash 应用程序中有一个按钮,单击时,它必须加载外部 SWF 文件并在新的 window 中打开它,而无需使用浏览器。 我试过了

import flash.system.fscommand;

loadButton.addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler(event:MouseEvent):void {
      fscommand ("exec", "external.swf");
 }

但是没有用。有人在论坛中提到,应用程序必须编译为 .EXE 文件才能使此代码正常工作。是真的吗?

我也试过了

loadButton.addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler(event:MouseEvent):void {
      navigateToURL(new URLRequest("external.swf"), "_blank");
 }

但这会在新浏览器中打开文件 window。 知道如何在不使用浏览器的情况下做到这一点吗?window?

使用 NativeWindow 很简单。尽管 NativeWindow 是一个单独的 window,您的应用程序仍然是一个整体并且可以完全访问所有内容,包括新的 window。您只需将 Loader 和另一个 SWF 添加到新 window 的舞台。

// This is an example from official docs:
// https://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/NativeWindow.html#NativeWindow()
var windowOptions:NativeWindowInitOptions = new NativeWindowInitOptions();
windowOptions.systemChrome = NativeWindowSystemChrome.STANDARD;
windowOptions.type = NativeWindowType.NORMAL;

var newWindow:NativeWindow = new NativeWindow(windowOptions);
newWindow.stage.scaleMode = StageScaleMode.NO_SCALE;
newWindow.stage.align = StageAlign.TOP_LEFT;
newWindow.bounds = new Rectangle(100, 100, 800, 800);

newWindow.activate();

// Now the only thing left is to load the external SWF into it:
var aLoader:Loader = new Loader;

// Load SWF as usual:
aLoader.load(new URLRequest("external.swf"));

// Add it as a child to the new window's stage:
newWindow.stage.addChild(aLoader);