我的桌面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");
}
但是这会在新的浏览器窗口中打开文件。 不知道如何在不使用浏览器窗口的情况下进行操作?
答案 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);