I have a button in my desktop flash application, when clicked, it must load an external SWF file and open it in a new window without using the browser. i've tried
import flash.system.fscommand;
loadButton.addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler(event:MouseEvent):void {
fscommand ("exec", "external.swf");
}
But it didn't work. Someone mentioned in a forum that the app must be compiled as a .EXE file for this code to work. is that true?.
i've also tried
loadButton.addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler(event:MouseEvent):void {
navigateToURL(new URLRequest("external.swf"), "_blank");
}
But this opens the file in a new browser window. Any idea how can i do it without using the browser window?
It is simple with the NativeWindow. Despite the fact the NativeWindow is a separate window, your application is still a whole and have a full access to everything, the new window included. You just need to add a Loader with another SWF to the new window's stage.
// 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);