diff --git a/.gitignore b/.gitignore index 195c6fbd9..0bed1e970 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ project/winrt/shaders/ *.swp .idea/ *.iml +tools/run.n diff --git a/lime/app/Preloader.hx b/lime/app/Preloader.hx index a92abe49c..c5f88993a 100644 --- a/lime/app/Preloader.hx +++ b/lime/app/Preloader.hx @@ -29,13 +29,21 @@ class Preloader #if flash extends Sprite #end { public function init (config:Config):Void { #if flash + Lib.current.stage.align = flash.display.StageAlign.TOP_LEFT; + Lib.current.stage.scaleMode = flash.display.StageScaleMode.NO_SCALE; + Lib.current.addChild (this); + Lib.current.loaderInfo.addEventListener (Event.COMPLETE, loaderInfo_onComplete); Lib.current.loaderInfo.addEventListener (Event.INIT, loaderInfo_onInit); Lib.current.loaderInfo.addEventListener (ProgressEvent.PROGRESS, loaderInfo_onProgress); Lib.current.addEventListener (Event.ENTER_FRAME, current_onEnter); #end + #if !flash + start (); + #end + } diff --git a/lime/system/System.hx b/lime/system/System.hx index edf05f791..4a4406b71 100644 --- a/lime/system/System.hx +++ b/lime/system/System.hx @@ -1,6 +1,11 @@ package lime.system; +#if js +import js.html.HtmlElement; +import js.Browser; +#end + #if sys import sys.io.Process; #end @@ -16,6 +21,56 @@ class System { #end + #if js + @:keep @:expose("lime.embed") + public static function embed (elementName:String, width:Null = null, height:Null = null, background:String = null) { + + var element:HtmlElement = null; + + if (elementName != null) { + + element = cast Browser.document.getElementById (elementName); + + } + + var color = null; + + if (background != null) { + + background = StringTools.replace (background, "#", ""); + + if (background.indexOf ("0x") > -1) { + + color = Std.parseInt (background); + + } else { + + color = Std.parseInt ("0x" + background); + + } + + } + + if (width == null) { + + width = 0; + + } + + if (height == null) { + + height = 0; + + } + + ApplicationMain.config.background = color; + ApplicationMain.config.element = element; + ApplicationMain.init (); + + } + #end + + static private function findHaxeLib (library:String):String { #if sys diff --git a/templates/flash/haxe/ApplicationMain.hx b/templates/flash/haxe/ApplicationMain.hx deleted file mode 100644 index e213a1e02..000000000 --- a/templates/flash/haxe/ApplicationMain.hx +++ /dev/null @@ -1,56 +0,0 @@ -import ::APP_MAIN::; - - -class ApplicationMain { - - - private static var app:lime.app.Application; - private static var config:lime.app.Config; - private static var preloader:lime.app.Preloader; - - - public static function main () { - - flash.Lib.current.stage.align = flash.display.StageAlign.TOP_LEFT; - flash.Lib.current.stage.scaleMode = flash.display.StageScaleMode.NO_SCALE; - - preloader = new ::if (PRELOADER_NAME != "")::::PRELOADER_NAME::::else::lime.app.Preloader::end:: (); - preloader.onComplete = start; - - config = { - - antialiasing: Std.int (::WIN_ANTIALIASING::), - borderless: ::WIN_BORDERLESS::, - depthBuffer: ::WIN_DEPTH_BUFFER::, - fps: Std.int (::WIN_FPS::), - fullscreen: ::WIN_FULLSCREEN::, - height: Std.int (::WIN_HEIGHT::), - orientation: "::WIN_ORIENTATION::", - resizable: ::WIN_RESIZABLE::, - stencilBuffer: ::WIN_STENCIL_BUFFER::, - title: "::APP_TITLE::", - vsync: ::WIN_VSYNC::, - width: Std.int (::WIN_WIDTH::), - - } - - preloader.init (config); - - } - - - private static function start ():Void { - - app = new ::APP_MAIN:: (); - app.create (config); - - var result = app.exec (); - - //#if sys - //Sys.exit (result); - //#end - - } - - -} \ No newline at end of file diff --git a/templates/haxe/ApplicationMain.hx b/templates/haxe/ApplicationMain.hx index ce6b3fba2..0a2f87cfd 100644 --- a/templates/haxe/ApplicationMain.hx +++ b/templates/haxe/ApplicationMain.hx @@ -4,14 +4,24 @@ import ::APP_MAIN::; class ApplicationMain { - private var app:lime.app.Application; + public static var config:lime.app.Config; + public static var preloader:lime.app.Preloader; + + private static var app:lime.app.Application; + + + public static function init ():Void { + + preloader = new ::if (PRELOADER_NAME != "")::::PRELOADER_NAME::::else::lime.app.Preloader::end:: (); + preloader.onComplete = start; + preloader.init (config); + + } public static function main () { - var app = new ::APP_MAIN:: (); - - var config:lime.app.Config = { + config = { antialiasing: Std.int (::WIN_ANTIALIASING::), borderless: ::WIN_BORDERLESS::, @@ -28,6 +38,18 @@ class ApplicationMain { } + #if (js && munit) + embed (null, ::WIN_WIDTH::, ::WIN_HEIGHT::, "::WIN_FLASHBACKGROUND::"); + #else + init (); + #end + + } + + + public static function start ():Void { + + app = new ::APP_MAIN:: (); app.create (config); var result = app.exec (); diff --git a/templates/html5/haxe/ApplicationMain.hx b/templates/html5/haxe/ApplicationMain.hx deleted file mode 100644 index ebbecd653..000000000 --- a/templates/html5/haxe/ApplicationMain.hx +++ /dev/null @@ -1,92 +0,0 @@ -import ::APP_MAIN::; - - -class ApplicationMain { - - - private var app:lime.app.Application; - - - @:keep @:expose("lime.embed") - public static function embed (elementName:String, width:Null = null, height:Null = null, background:String = null) { - - var element:js.html.HtmlElement = null; - - if (elementName != null) { - - element = cast js.Browser.document.getElementById (elementName); - - } - - var color = null; - - if (background != null) { - - background = StringTools.replace (background, "#", ""); - - if (background.indexOf ("0x") > -1) { - - color = Std.parseInt (background); - - } else { - - color = Std.parseInt ("0x" + background); - - } - - } - - if (width == null) { - - width = 0; - - } - - if (height == null) { - - height = 0; - - } - - var app = new ::APP_MAIN:: (); - - var config:lime.app.Config = { - - antialiasing: Std.int (::WIN_ANTIALIASING::), - background: color, - borderless: ::WIN_BORDERLESS::, - depthBuffer: ::WIN_DEPTH_BUFFER::, - element: element, - fps: Std.int (::WIN_FPS::), - fullscreen: ::WIN_FULLSCREEN::, - height: height, - orientation: "::WIN_ORIENTATION::", - resizable: ::WIN_RESIZABLE::, - stencilBuffer: ::WIN_STENCIL_BUFFER::, - title: "::APP_TITLE::", - vsync: ::WIN_VSYNC::, - width: width, - - } - - app.create (config); - - var result = app.exec (); - - //#if sys - //Sys.exit (result); - //#end - - } - - - public static function main () { - - #if munit - embed (null, ::WIN_WIDTH::, ::WIN_HEIGHT::, "::WIN_FLASHBACKGROUND::"); - #end - - } - - -} \ No newline at end of file