在新窗口中打开SWF文件

时间:2017-12-11 13:13:43

标签: actionscript-3 flash actionscript flash-cs6

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

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");
 }

但是这会在新的浏览器窗口中打开文件。 不知道如何在不使用浏览器窗口的情况下进行操作?

1 个答案:

答案 0 :(得分:1)

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

// 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);