From ff1233b28ebaebc8f04b2859a3afa061177c4740 Mon Sep 17 00:00:00 2001 From: shmyga Date: Tue, 11 Jul 2017 14:14:59 +0300 Subject: [PATCH] update --- haxelib.json | 4 +- src/main/haxework/gui/GroupView.hx | 3 +- src/main/haxework/gui/IGroupView.hx | 2 +- src/main/haxework/gui/ImageView.hx | 7 +- src/main/haxework/net/BaseLoader.hx | 68 +++++++++++-------- src/main/haxework/net/BaseMediaLoader.hx | 1 + src/main/haxework/net/BatchLoader.hx | 2 +- src/main/haxework/net/ILoader.hx | 12 ++-- src/main/haxework/net/order/IOrderSupplier.hx | 3 +- src/main/haxework/net/order/OrderSupplier.hx | 9 +-- 10 files changed, 64 insertions(+), 47 deletions(-) diff --git a/haxelib.json b/haxelib.json index ee23ceb..83bed58 100755 --- a/haxelib.json +++ b/haxelib.json @@ -4,8 +4,8 @@ "license": "BSD", "tags": ["flash"], "description": "Framework.", - "version": "0.3.0", - "releasenote": "Use promhx library.", + "version": "0.6.0", + "releasenote": "Update.", "contributors": ["shmyga"], "classPath": "src/main", "dependencies": { diff --git a/src/main/haxework/gui/GroupView.hx b/src/main/haxework/gui/GroupView.hx index cede1be..66b13c7 100755 --- a/src/main/haxework/gui/GroupView.hx +++ b/src/main/haxework/gui/GroupView.hx @@ -52,6 +52,7 @@ class GroupView extends SpriteView implements IGroupView { } public function set_views(value:Array):Array { + removeAllViews(); if (views == null) views = []; for (view in value) addView(view); return views; @@ -95,7 +96,7 @@ class GroupView extends SpriteView implements IGroupView { } public function removeAllViews():Void { - while (views.length > 0) { + if (views != null) while (views.length > 0) { removeView(views[0]); } } diff --git a/src/main/haxework/gui/IGroupView.hx b/src/main/haxework/gui/IGroupView.hx index ca3297d..8f61e6d 100755 --- a/src/main/haxework/gui/IGroupView.hx +++ b/src/main/haxework/gui/IGroupView.hx @@ -9,7 +9,7 @@ import haxework.gui.layout.ILayout; interface IGroupView extends IView extends HasPaddings { public var container(get, null):DisplayObjectContainer; - public var views(default, null):Array; + public var views(default, set):Array; public var layout(default, default):ILayout; public var layoutVAlign(default, set):VAlign; diff --git a/src/main/haxework/gui/ImageView.hx b/src/main/haxework/gui/ImageView.hx index a20b2ef..fae80c6 100755 --- a/src/main/haxework/gui/ImageView.hx +++ b/src/main/haxework/gui/ImageView.hx @@ -11,14 +11,17 @@ class ImageView extends SpriteView { public var image(default, set):BitmapData; public var imageUrl(default, set):String; - public function new() { + public function new(?image:BitmapData) { super(); + if (image != null) { + this.image = image; + } } private function set_image(value:BitmapData):BitmapData { if (image != value) { image = value; - skin = untyped new BitmapSkin(image, FillType.CONTAIN); + skin = cast new BitmapSkin(image, FillType.CONTAIN); invalidate(); } return image; diff --git a/src/main/haxework/net/BaseLoader.hx b/src/main/haxework/net/BaseLoader.hx index ff9d60a..9dafdd6 100755 --- a/src/main/haxework/net/BaseLoader.hx +++ b/src/main/haxework/net/BaseLoader.hx @@ -1,6 +1,9 @@ package haxework.net; -import flash.utils.JSON; +import promhx.Deferred; +import promhx.Promise; +//import flash.utils.JSON; +import haxe.Json; import haxe.Timer; import flash.net.URLRequestMethod; import flash.events.ProgressEvent; @@ -8,7 +11,6 @@ import haxework.net.manage.ILoaderManager; import haxework.provider.Provider; import flash.utils.ByteArray; import flash.events.Event; -import promhx.Deferred; class BaseLoader extends Deferred implements ILoader { @@ -37,7 +39,7 @@ class BaseLoader extends Deferred implements ILoader { completed = Math.NaN; } - public function request(url:String, method:String, data:Dynamic = null):Deferred { + public function request(url:String, method:String, data:Dynamic = null):Promise { if (busy) { throwError("Busy"); } else { @@ -50,7 +52,7 @@ class BaseLoader extends Deferred implements ILoader { //internalRequest(prepareUrl(url)); Provider.get(ILoaderManager).add(this); } - return this; + return this.promise(); } private function cockTimeout():Void { @@ -67,49 +69,57 @@ class BaseLoader extends Deferred implements ILoader { } } - public function fromBytes(data:ByteArray):Deferred { + public function fromBytes(data:ByteArray):Promise { if (busy) { throwError("Busy"); } else { busy = true; internalFromBytes(data); } - return this; + return this.promise(); } - public function GET(url:String, data:Dynamic = null):Deferred { + private function fromAssets(url:String):Promise { + try { + var path:String = url.substring(9); + // ToDo: get text resources with getText method + var extension:String = path.substring(path.lastIndexOf(".")+1, path.length); + if (extension == "json" || extension == "txt") { + var data:T = cast Json.parse(openfl.Assets.getText(path)); + resolve(data); + return this.promise(); + } else if (extension == "png" || extension == "jpg" || extension == "jpeg") { + var data:T = cast openfl.Assets.getBitmapData(path); + resolve(data); + return this.promise(); + } + var bytes:ByteArray = openfl.Assets.getBytes(path); + if (bytes == null) { + throwError("Bytes is null for asset: " + path); + return this.promise(); + } else { + return fromBytes(bytes); + } + } catch (error:Dynamic) { + throwError(error); + return this.promise(); + } + } + + public function GET(url:String, data:Dynamic = null):Promise { #if (openfl && lime) if (StringTools.startsWith(url, "%assets%")) { - try { - var path:String = url.substring(9); - // ToDo: get text resources with getText method - var extension:String = path.substring(path.lastIndexOf(".")+1, path.length); - if (extension == "json" || extension == "txt") { - var data:T = cast JSON.parse(openfl.Assets.getText(path)); - resolve(data); - return this; - } - var bytes:ByteArray = openfl.Assets.getBytes(path); - if (bytes == null) { - throwError("Bytes is null for asset: " + path); - return this; - } else { - return fromBytes(bytes); - } - } catch (error:Dynamic) { - throwError(error); - return this; - } + return fromAssets(url); } #end return request(url, URLRequestMethod.GET, data); } - public function POST(url:String, data:Dynamic = null):Deferred { + public function POST(url:String, data:Dynamic = null):Promise { return request(url, URLRequestMethod.POST, data); } - public function DELETE(url:String, data:Dynamic = null):Deferred { + public function DELETE(url:String, data:Dynamic = null):Promise { return request(url, URLRequestMethod.DELETE, data); } diff --git a/src/main/haxework/net/BaseMediaLoader.hx b/src/main/haxework/net/BaseMediaLoader.hx index d5b9c40..1f6b2d2 100755 --- a/src/main/haxework/net/BaseMediaLoader.hx +++ b/src/main/haxework/net/BaseMediaLoader.hx @@ -18,6 +18,7 @@ class BaseMediaLoader extends BaseLoader { private var loader:Loader; override private function internalRequest(url:String):Void { + L.d("BaseMediaLoader", "request: " + url); cockTimeout(); loader = buildLoader(); loader.load(new URLRequest(url), buildLoaderContext(false)); diff --git a/src/main/haxework/net/BatchLoader.hx b/src/main/haxework/net/BatchLoader.hx index 8828f02..8ac2aa6 100755 --- a/src/main/haxework/net/BatchLoader.hx +++ b/src/main/haxework/net/BatchLoader.hx @@ -14,7 +14,7 @@ class BatchLoader { public function GET(urls:Array):Promise> { return Promise.whenAll(urls.map(function(url:String):Promise { var loader:ILoader = Type.createInstance(factory, []); - return loader.GET(url).promise(); + return loader.GET(url); })); } } \ No newline at end of file diff --git a/src/main/haxework/net/ILoader.hx b/src/main/haxework/net/ILoader.hx index fd5a1bc..666c41e 100755 --- a/src/main/haxework/net/ILoader.hx +++ b/src/main/haxework/net/ILoader.hx @@ -1,18 +1,18 @@ package haxework.net; +import promhx.Promise; import flash.utils.ByteArray; -import promhx.Deferred; interface ILoader { public var timeout(default, default):Int; public var busy(default, null):Bool; public var completed(default, null):Float; - public function request(url:String, method:String, data:Dynamic = null):Deferred; - public function fromBytes(data:ByteArray):Deferred; - public function GET(url:String, data:Dynamic = null):Deferred; - public function POST(url:String, data:Dynamic = null):Deferred; - public function DELETE(url:String, data:Dynamic = null):Deferred; + public function request(url:String, method:String, data:Dynamic = null):Promise; + public function fromBytes(data:ByteArray):Promise; + public function GET(url:String, data:Dynamic = null):Promise; + public function POST(url:String, data:Dynamic = null):Promise; + public function DELETE(url:String, data:Dynamic = null):Promise; public function cancel():Void; public function run():Void; diff --git a/src/main/haxework/net/order/IOrderSupplier.hx b/src/main/haxework/net/order/IOrderSupplier.hx index 8916c20..32c714a 100755 --- a/src/main/haxework/net/order/IOrderSupplier.hx +++ b/src/main/haxework/net/order/IOrderSupplier.hx @@ -1,5 +1,6 @@ package haxework.net.order; +import promhx.Promise; import promhx.Deferred; typedef Order = { @@ -12,6 +13,6 @@ typedef Order = { interface IOrderSupplier { public var orders(default, null):Map>; - public function request(url:String, clazz:Class):Deferred; + public function request(url:String, clazz:Class):Promise; public function release(url:String, force:Bool = false):Void; } \ No newline at end of file diff --git a/src/main/haxework/net/order/OrderSupplier.hx b/src/main/haxework/net/order/OrderSupplier.hx index caa2db7..e9d7633 100755 --- a/src/main/haxework/net/order/OrderSupplier.hx +++ b/src/main/haxework/net/order/OrderSupplier.hx @@ -1,5 +1,6 @@ package haxework.net.order; +import promhx.Promise; import promhx.Deferred; import haxework.net.order.IOrderSupplier.Order; import flash.display.BitmapData; @@ -14,12 +15,12 @@ class OrderSupplier implements IOrderSupplier { orders = new Map>(); } - public function request(url:String, clazz:Class):Deferred { + public function request(url:String, clazz:Class):Promise { if (orders.exists(url)) { var order:Order = orders.get(url); order.clients++; //L.d(TAG, "Request(" + order.clients + "): " + url); - return order.deferred; + return order.deferred.promise(); } else { var deferred = new Deferred(); var order:Order = { @@ -43,7 +44,7 @@ class OrderSupplier implements IOrderSupplier { if (orders.exists(url)) orders.get(url).deferred.throwError(error); orders.remove(url); }); - return deferred; + return deferred.promise(); } } @@ -65,7 +66,7 @@ class OrderSupplier implements IOrderSupplier { private function buildLoader(clazz:Class):ILoader { var c:Class = clazz; return if (c == BitmapData) { - var loader:ILoader = untyped new ImageLoader(); + var loader:ILoader = cast new ImageLoader(); loader.timeout = 7000; //ToDo: hardcode timeout for loading images loader; } else {