package
{
import flash.display.Sprite;
import flash.events.Event;
import launcher.background.Background_Main;
import launcher.button.FightButton;
import launcher.panel.languagePanel;
import launcher.panel.social.socialPanel;
import launcher.panel.buttonBar.quickPanel;
import launcher.snow.Snow;
import flash.display.StageAlign;
import flash.display.StageDisplayState;
import flash.display.StageQuality;
import flash.display.StageScaleMode;
import flash.display.NativeWindow;
import flash.display.NativeWindowType;
import flash.display.NativeWindowInitOptions;
import flash.desktop.NativeApplication;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.display.Screen;
import zip.ZIPResourceLoader;
import caurina.transitions.Tweener;
import flash.display.Loader;
import flash.system.LoaderContext;
import flash.system.ApplicationDomain;
import flash.events.IOErrorEvent;
import flash.net.URLVariables;
import flash.net.URLRequest;
import flash.events.MouseEvent;

/**
* …
* @author alekskart
*/
public class Main extends Sprite
{
private var loader:Loader;
private var locale:String;
private var guiLayer:Sprite;
public var background:Background_Main = new Background_Main();
public var progressBar:ProgressBar;
public var socialbar:socialPanel = new socialPanel();
public var quickbar:quickPanel = new quickPanel();
public var fightButton:FightButton = new FightButton();
public var bgButton:bg_button = new bg_button();
public var languagepanel:languagePanel = new languagePanel(quickbar, fightButton);

public function Main()
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
//var ziploader:ZIPResourceLoader = new ZIPResourceLoader(progressBar);
}

private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
this.configureStage();
this.createGUI();
//это при запуске первом
Tweener.addTween(bgButton, {alpha: 1, time: 2, transition: “easeOutCubic”, onComplete: fadeOutButton});
}

private function setCenterPosition() : void
{
var appBounds:Rectangle = stage.nativeWindow.bounds;
var screen:Screen = Screen.getScreensForRectangle(appBounds)[0];
stage.stageWidth = 1034;
stage.stageHeight = 680;
stage.nativeWindow.maxSize = new Point(stage.nativeWindow.width,stage.nativeWindow.height);
stage.nativeWindow.minSize = new Point(stage.nativeWindow.width,stage.nativeWindow.height);
stage.nativeWindow.x = (screen.bounds.width - stage.nativeWindow.width) / 2;
stage.nativeWindow.y = (screen.bounds.height - stage.nativeWindow.height) / 2;
}

private function configureStage() : void
{
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.quality = StageQuality.BEST;
stage.displayState = StageDisplayState.NORMAL;
stage.stageWidth = 1034;
stage.stageHeight = 680;
this.setCenterPosition();
}

private function createGUI() : void
{
this.guiLayer = new Sprite();
this.background.width = stage.stageWidth;
this.background.height = stage.stageHeight;
this.background.y = 0;
this.guiLayer.addChild(this.background);
this.socialbar.x = stage.stageWidth - this.socialbar.width - 15;
this.socialbar.y = 29;
this.guiLayer.addChild(this.socialbar);

this.quickbar.x = (stage.stageWidth - this.quickbar.width) / 2 + 20;
this.quickbar.y = 29;
this.guiLayer.addChild(this.quickbar);


this.languagepanel.x = (stage.stageWidth - this.languagepanel.width) / 2 + 20;
this.languagepanel.y = 50;
this.guiLayer.addChild(this.languagepanel);


this.bgButton.x = stage.stageWidth / 2 - this.bgButton.width / 2;
this.bgButton.y = stage.stageHeight / 2 - this.bgButton.height / 2 + 185;
this.guiLayer.addChild(this.bgButton);


this.fightButton.x = stage.stageWidth / 2 - this.fightButton.width / 2;
this.fightButton.y = stage.stageHeight / 2 - this.fightButton.height / 2 + 185;
this.fightButton.addEventListener(MouseEvent.CLICK, startPressed);
this.guiLayer.addChild(this.fightButton);



this.progressBar = new ProgressBar();
this.progressBar.x = (stage.stageWidth - this.progressBar.width) / 2;
this.progressBar.y = (stage.stageHeight - this.progressBar.height) / 2 + 280;
this.guiLayer.addChild(this.progressBar);
this.guiLayer.addChild(new Snow(25));
addChild(this.guiLayer);
stage.addEventListener(Event.RESIZE, onResize);
}

private function startPressed(e:MouseEvent = null):void
{
var options:NativeWindowInitOptions = new NativeWindowInitOptions();
while (this.guiLayer.numChildren > 0)
{
this.guiLayer.removeChildAt(0);
};
options.renderMode = “direct”;
options.maximizable = true;
var window:NativeWindow = new NativeWindow(options);

window.minSize = new Point(0x0400, 0x0300);
window.maxSize = new Point(4095, 2880);
window.stage.scaleMode = StageScaleMode.NO_SCALE;
window.stage.align = StageAlign.TOP_LEFT;

var loader:Loader = new Loader();
//loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onSWFLoaded);
loader.load(new URLRequest(“loader.swf”));

window.stage.addChild(loader);
window.activate();
window.addEventListener(Event.CLOSE, onWindowClose);
stage.nativeWindow.close(); // Закрытие предыдущего окна
}

//private function onSWFLoaded(event:Event):void
//{
// // Код, который вызывается после загрузки swf файла
// // Например, получение ссылки на загруженный контент:
// var loadedContent:Object = event.currentTarget.content;
// }

private function onWindowClose(event:Event):void
{
NativeApplication.nativeApplication.exit();
}

///Затухание
private function fadeOutButton():void {
Tweener.addTween(bgButton, {alpha: 0, time: 4, delay: 0, transition: “easeOutCubic”, onComplete: fadeInButton});
}

//появление после затухания
private function fadeInButton():void {
Tweener.addTween(bgButton, {alpha: 1, time: 4, delay: 0, transition: “easeOutCubic”, onComplete: fadeOutButton});
}

private function onResize(event:Event):void
{
var scale:Number = Math.min(stage.stageWidth / this.background.width, stage.stageHeight / this.background.height);
this.background.width *= scale;
this.background.height *= scale;
var newHeight:Number = this.background.height * 0.86;
this.background.height = newHeight;
this.background.x = (stage.stageWidth - this.background.width) / 2;
// this.background.y = (stage.stageHeight - this.background.height) * 0.25;
}


}

} надо это добавить в startPressed var loaderContext:LoaderContext = new LoaderContext(false, new ApplicationDomain(ApplicationDomain.currentDomain));
loaderContext.parameters = this.airParameters;
var loaderInfo:LoaderInfo = this.loader.contentLoaderInfo;
loaderInfo.addEventListener(Event.COMPLETE, this.onLauncherLoadingComplete, false, 0, true);
loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, this.onLoadingError, false, 0, true);
loaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onLoadingError, false, 0, true);
loaderContext.allowCodeImport = true;