update
This commit is contained in:
@@ -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": {
|
||||
|
||||
@@ -52,6 +52,7 @@ class GroupView extends SpriteView implements IGroupView {
|
||||
}
|
||||
|
||||
public function set_views(value:Array<IView>):Array<IView> {
|
||||
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]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<IView>;
|
||||
public var views(default, set):Array<IView>;
|
||||
public var layout(default, default):ILayout;
|
||||
|
||||
public var layoutVAlign(default, set):VAlign;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<T> extends Deferred<T> implements ILoader<T> {
|
||||
|
||||
@@ -37,7 +39,7 @@ class BaseLoader<T> extends Deferred<T> implements ILoader<T> {
|
||||
completed = Math.NaN;
|
||||
}
|
||||
|
||||
public function request(url:String, method:String, data:Dynamic = null):Deferred<T> {
|
||||
public function request(url:String, method:String, data:Dynamic = null):Promise<T> {
|
||||
if (busy) {
|
||||
throwError("Busy");
|
||||
} else {
|
||||
@@ -50,7 +52,7 @@ class BaseLoader<T> extends Deferred<T> implements ILoader<T> {
|
||||
//internalRequest(prepareUrl(url));
|
||||
Provider.get(ILoaderManager).add(this);
|
||||
}
|
||||
return this;
|
||||
return this.promise();
|
||||
}
|
||||
|
||||
private function cockTimeout():Void {
|
||||
@@ -67,49 +69,57 @@ class BaseLoader<T> extends Deferred<T> implements ILoader<T> {
|
||||
}
|
||||
}
|
||||
|
||||
public function fromBytes(data:ByteArray):Deferred<T> {
|
||||
public function fromBytes(data:ByteArray):Promise<T> {
|
||||
if (busy) {
|
||||
throwError("Busy");
|
||||
} else {
|
||||
busy = true;
|
||||
internalFromBytes(data);
|
||||
}
|
||||
return this;
|
||||
return this.promise();
|
||||
}
|
||||
|
||||
public function GET(url:String, data:Dynamic = null):Deferred<T> {
|
||||
#if (openfl && lime)
|
||||
if (StringTools.startsWith(url, "%assets%")) {
|
||||
private function fromAssets(url:String):Promise<T> {
|
||||
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));
|
||||
var data:T = cast Json.parse(openfl.Assets.getText(path));
|
||||
resolve(data);
|
||||
return this;
|
||||
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;
|
||||
return this.promise();
|
||||
} else {
|
||||
return fromBytes(bytes);
|
||||
}
|
||||
} catch (error:Dynamic) {
|
||||
throwError(error);
|
||||
return this;
|
||||
return this.promise();
|
||||
}
|
||||
}
|
||||
|
||||
public function GET(url:String, data:Dynamic = null):Promise<T> {
|
||||
#if (openfl && lime)
|
||||
if (StringTools.startsWith(url, "%assets%")) {
|
||||
return fromAssets(url);
|
||||
}
|
||||
#end
|
||||
return request(url, URLRequestMethod.GET, data);
|
||||
}
|
||||
|
||||
public function POST(url:String, data:Dynamic = null):Deferred<T> {
|
||||
public function POST(url:String, data:Dynamic = null):Promise<T> {
|
||||
return request(url, URLRequestMethod.POST, data);
|
||||
}
|
||||
|
||||
public function DELETE(url:String, data:Dynamic = null):Deferred<T> {
|
||||
public function DELETE(url:String, data:Dynamic = null):Promise<T> {
|
||||
return request(url, URLRequestMethod.DELETE, data);
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ class BaseMediaLoader<T> extends BaseLoader<T> {
|
||||
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));
|
||||
|
||||
@@ -14,7 +14,7 @@ class BatchLoader<T> {
|
||||
public function GET(urls:Array<String>):Promise<Array<T>> {
|
||||
return Promise.whenAll(urls.map(function(url:String):Promise<T> {
|
||||
var loader:ILoader<T> = Type.createInstance(factory, []);
|
||||
return loader.GET(url).promise();
|
||||
return loader.GET(url);
|
||||
}));
|
||||
}
|
||||
}
|
||||
@@ -1,18 +1,18 @@
|
||||
package haxework.net;
|
||||
|
||||
import promhx.Promise;
|
||||
import flash.utils.ByteArray;
|
||||
import promhx.Deferred;
|
||||
|
||||
interface ILoader<T> {
|
||||
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<T>;
|
||||
public function fromBytes(data:ByteArray):Deferred<T>;
|
||||
public function GET(url:String, data:Dynamic = null):Deferred<T>;
|
||||
public function POST(url:String, data:Dynamic = null):Deferred<T>;
|
||||
public function DELETE(url:String, data:Dynamic = null):Deferred<T>;
|
||||
public function request(url:String, method:String, data:Dynamic = null):Promise<T>;
|
||||
public function fromBytes(data:ByteArray):Promise<T>;
|
||||
public function GET(url:String, data:Dynamic = null):Promise<T>;
|
||||
public function POST(url:String, data:Dynamic = null):Promise<T>;
|
||||
public function DELETE(url:String, data:Dynamic = null):Promise<T>;
|
||||
public function cancel():Void;
|
||||
|
||||
public function run():Void;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package haxework.net.order;
|
||||
|
||||
import promhx.Promise;
|
||||
import promhx.Deferred;
|
||||
|
||||
typedef Order<T> = {
|
||||
@@ -12,6 +13,6 @@ typedef Order<T> = {
|
||||
interface IOrderSupplier {
|
||||
public var orders(default, null):Map<String, Order<Dynamic>>;
|
||||
|
||||
public function request<T>(url:String, clazz:Class<T>):Deferred<T>;
|
||||
public function request<T>(url:String, clazz:Class<T>):Promise<T>;
|
||||
public function release(url:String, force:Bool = false):Void;
|
||||
}
|
||||
@@ -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<String, Order<Dynamic>>();
|
||||
}
|
||||
|
||||
public function request<T>(url:String, clazz:Class<T>):Deferred<T> {
|
||||
public function request<T>(url:String, clazz:Class<T>):Promise<T> {
|
||||
if (orders.exists(url)) {
|
||||
var order:Order<T> = orders.get(url);
|
||||
order.clients++;
|
||||
//L.d(TAG, "Request(" + order.clients + "): " + url);
|
||||
return order.deferred;
|
||||
return order.deferred.promise();
|
||||
} else {
|
||||
var deferred = new Deferred<T>();
|
||||
var order:Order<T> = {
|
||||
@@ -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<T>(clazz:Class<T>):ILoader<T> {
|
||||
var c:Class<Dynamic> = clazz;
|
||||
return if (c == BitmapData) {
|
||||
var loader:ILoader<T> = untyped new ImageLoader();
|
||||
var loader:ILoader<T> = cast new ImageLoader();
|
||||
loader.timeout = 7000; //ToDo: hardcode timeout for loading images
|
||||
loader;
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user