From 918221000166af10d065ec3fef513a1b7ce47fd1 Mon Sep 17 00:00:00 2001 From: shmyga Date: Wed, 6 Feb 2019 23:01:39 +0300 Subject: [PATCH] [samples] update loader sample --- samples/01-view/{test.sh => run.sh} | 0 samples/02-loader/build.hxml | 4 +- samples/02-loader/run.sh | 3 + samples/02-loader/src/LoaderExample.hx | 59 ++++++++++--------- src/main/haxework/macro/ProvideMacro.hx | 9 ++- src/main/haxework/net/BaseLoader.hx | 12 ++-- src/main/haxework/net/manage/LoaderManager.hx | 6 +- 7 files changed, 53 insertions(+), 40 deletions(-) rename samples/01-view/{test.sh => run.sh} (100%) create mode 100644 samples/02-loader/run.sh diff --git a/samples/01-view/test.sh b/samples/01-view/run.sh similarity index 100% rename from samples/01-view/test.sh rename to samples/01-view/run.sh diff --git a/samples/02-loader/build.hxml b/samples/02-loader/build.hxml index e42934d..3724ca6 100755 --- a/samples/02-loader/build.hxml +++ b/samples/02-loader/build.hxml @@ -3,4 +3,6 @@ -lib haxework -main LoaderExample.hx -swf-version 10.1 --swf target/LoaderExample.swf \ No newline at end of file +-swf-header 800:600:30:000000 +-swf target/LoaderExample.swf +#-as3 target diff --git a/samples/02-loader/run.sh b/samples/02-loader/run.sh new file mode 100644 index 0000000..a3aa04a --- /dev/null +++ b/samples/02-loader/run.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +. /opt/sdk/haxe/3.4.7/activate +haxe build.hxml && flashplayerdebugger target/LoaderExample.swf diff --git a/samples/02-loader/src/LoaderExample.hx b/samples/02-loader/src/LoaderExample.hx index 15d981b..3c67659 100755 --- a/samples/02-loader/src/LoaderExample.hx +++ b/samples/02-loader/src/LoaderExample.hx @@ -1,43 +1,46 @@ package; +import haxework.net.manage.LoaderManager; +import haxework.net.manage.ILoaderManager; import flash.display.Bitmap; import flash.Lib; import flash.display.BitmapData; import haxework.net.ImageLoader; import haxework.net.JsonLoader; + typedef ChannelItem = { - var id:String; - var maker:String; - var title:String; - var message:String; + var id:String; + var maker:String; + var title:String; + var message:String; } class LoaderExample { - public static function main() { - // Json - trace("Json Request"); - new JsonLoader().GET("http://umix.tv/channel/data2/renova.json") - .then(function(channel:Array) { - trace("Json Ok: " + channel.length); - for (item in channel) { - trace(item.id + ": " + item.message); - } - }) - .catchError(function(error) { - trace(error); - }); + @:provide private static var manager:ILoaderManager; - // Image - trace("Image Request"); - new ImageLoader().GET("http://umix.tv/channel/block/renova/1") - .then(function(image:BitmapData) { - trace("Image Ok: " + image.width + "x" + image.height); - Lib.current.addChild(new Bitmap(image)); - }) - .catchError(function(error) { - trace(error); - }); - } + public static function main() { + manager = new LoaderManager(1); + + // Json + trace("Json Request"); + new JsonLoader().GET("http://umix.tv/channel/data2/renova.json") + .then(function(channel:Array) { + trace('Json Ok: ${channel.length}'); + for (item in channel) { + trace('${item.id}: ${item.message}'); + } + }) + .catchError(function(error) trace(error)); + + // Image + trace("Image Request"); + new ImageLoader().GET("http://umix.tv/channel/block/renova/1") + .then(function(image:BitmapData) { + trace('Image Ok: ${image.width}x${image.height}}'); + Lib.current.addChild(new Bitmap(image)); + }) + .catchError(function(error) trace(error)); + } } diff --git a/src/main/haxework/macro/ProvideMacro.hx b/src/main/haxework/macro/ProvideMacro.hx index 6bfcd13..db77612 100644 --- a/src/main/haxework/macro/ProvideMacro.hx +++ b/src/main/haxework/macro/ProvideMacro.hx @@ -30,15 +30,18 @@ class ProvideMacro { case ComplexType.TPath(p): p.name; default: null; } + var isStatic = Lambda.exists(field.access, function(a: Access) return a == AStatic); result.push({ name: field.name, - access: [Access.APublic], + access: isStatic ? [Access.APublic, Access.AStatic] : [Access.APublic], pos: field.pos, kind: FieldType.FProp('get', 'set', type) }); + var access = [Access.APrivate, Access.AInline]; + if (isStatic) access.push(Access.AStatic); result.push({ name: 'get_${field.name}', - access: [Access.APrivate, Access.AInline], + access: access, pos: field.pos, kind: FieldType.FFun({ args: [], @@ -49,7 +52,7 @@ class ProvideMacro { }); result.push({ name: 'set_${field.name}', - access: [Access.APrivate, Access.AInline], + access: access, pos: field.pos, kind: FieldType.FFun({ args: [{name: 'value', type: type}], diff --git a/src/main/haxework/net/BaseLoader.hx b/src/main/haxework/net/BaseLoader.hx index 9dafdd6..b72c7cf 100755 --- a/src/main/haxework/net/BaseLoader.hx +++ b/src/main/haxework/net/BaseLoader.hx @@ -2,13 +2,11 @@ package haxework.net; import promhx.Deferred; import promhx.Promise; -//import flash.utils.JSON; import haxe.Json; import haxe.Timer; import flash.net.URLRequestMethod; import flash.events.ProgressEvent; import haxework.net.manage.ILoaderManager; -import haxework.provider.Provider; import flash.utils.ByteArray; import flash.events.Event; @@ -32,7 +30,9 @@ class BaseLoader extends Deferred implements ILoader { private var data:Null; private var timer:Timer; - public function new(?timeout = 0) { + @:provide private var manager:ILoaderManager; + + public function new(timeout = 0) { super(); this.timeout = timeout; busy = false; @@ -50,7 +50,7 @@ class BaseLoader extends Deferred implements ILoader { var url:String = this.url; //L.d(TAG, "Request: " + prepareUrl(url)); //internalRequest(prepareUrl(url)); - Provider.get(ILoaderManager).add(this); + manager.add(this); } return this.promise(); } @@ -79,6 +79,7 @@ class BaseLoader extends Deferred implements ILoader { return this.promise(); } + #if (openfl && lime) private function fromAssets(url:String):Promise { try { var path:String = url.substring(9); @@ -105,6 +106,7 @@ class BaseLoader extends Deferred implements ILoader { return this.promise(); } } + #end public function GET(url:String, data:Dynamic = null):Promise { #if (openfl && lime) @@ -178,7 +180,7 @@ class BaseLoader extends Deferred implements ILoader { data = null; busy = false; completed = Math.NaN; - Provider.get(ILoaderManager).release(this); + manager.release(this); } public function cancel():Void { diff --git a/src/main/haxework/net/manage/LoaderManager.hx b/src/main/haxework/net/manage/LoaderManager.hx index 6691daf..d8082f5 100755 --- a/src/main/haxework/net/manage/LoaderManager.hx +++ b/src/main/haxework/net/manage/LoaderManager.hx @@ -8,10 +8,10 @@ class LoaderManager implements ILoaderManager { public var queue(default, null):Array>; public var limit(default, default):Int; - public function new() { + public function new(limit:Int = 10) { queue = new Array>(); actives = new Array>(); - limit = 10; + this.limit = limit; } public function add(loader:ILoader):Void { @@ -33,4 +33,4 @@ class LoaderManager implements ILoaderManager { run(queue.shift()); } } -} \ No newline at end of file +}