update
This commit is contained in:
@@ -4,8 +4,8 @@
|
|||||||
"license": "BSD",
|
"license": "BSD",
|
||||||
"tags": ["flash"],
|
"tags": ["flash"],
|
||||||
"description": "Framework.",
|
"description": "Framework.",
|
||||||
"version": "0.3.0",
|
"version": "0.6.0",
|
||||||
"releasenote": "Use promhx library.",
|
"releasenote": "Update.",
|
||||||
"contributors": ["shmyga"],
|
"contributors": ["shmyga"],
|
||||||
"classPath": "src/main",
|
"classPath": "src/main",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ class GroupView extends SpriteView implements IGroupView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function set_views(value:Array<IView>):Array<IView> {
|
public function set_views(value:Array<IView>):Array<IView> {
|
||||||
|
removeAllViews();
|
||||||
if (views == null) views = [];
|
if (views == null) views = [];
|
||||||
for (view in value) addView(view);
|
for (view in value) addView(view);
|
||||||
return views;
|
return views;
|
||||||
@@ -95,7 +96,7 @@ class GroupView extends SpriteView implements IGroupView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function removeAllViews():Void {
|
public function removeAllViews():Void {
|
||||||
while (views.length > 0) {
|
if (views != null) while (views.length > 0) {
|
||||||
removeView(views[0]);
|
removeView(views[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import haxework.gui.layout.ILayout;
|
|||||||
interface IGroupView extends IView extends HasPaddings {
|
interface IGroupView extends IView extends HasPaddings {
|
||||||
public var container(get, null):DisplayObjectContainer;
|
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 layout(default, default):ILayout;
|
||||||
|
|
||||||
public var layoutVAlign(default, set):VAlign;
|
public var layoutVAlign(default, set):VAlign;
|
||||||
|
|||||||
@@ -11,14 +11,17 @@ class ImageView extends SpriteView {
|
|||||||
public var image(default, set):BitmapData;
|
public var image(default, set):BitmapData;
|
||||||
public var imageUrl(default, set):String;
|
public var imageUrl(default, set):String;
|
||||||
|
|
||||||
public function new() {
|
public function new(?image:BitmapData) {
|
||||||
super();
|
super();
|
||||||
|
if (image != null) {
|
||||||
|
this.image = image;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function set_image(value:BitmapData):BitmapData {
|
private function set_image(value:BitmapData):BitmapData {
|
||||||
if (image != value) {
|
if (image != value) {
|
||||||
image = value;
|
image = value;
|
||||||
skin = untyped new BitmapSkin(image, FillType.CONTAIN);
|
skin = cast new BitmapSkin(image, FillType.CONTAIN);
|
||||||
invalidate();
|
invalidate();
|
||||||
}
|
}
|
||||||
return image;
|
return image;
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
package haxework.net;
|
package haxework.net;
|
||||||
|
|
||||||
import flash.utils.JSON;
|
import promhx.Deferred;
|
||||||
|
import promhx.Promise;
|
||||||
|
//import flash.utils.JSON;
|
||||||
|
import haxe.Json;
|
||||||
import haxe.Timer;
|
import haxe.Timer;
|
||||||
import flash.net.URLRequestMethod;
|
import flash.net.URLRequestMethod;
|
||||||
import flash.events.ProgressEvent;
|
import flash.events.ProgressEvent;
|
||||||
@@ -8,7 +11,6 @@ import haxework.net.manage.ILoaderManager;
|
|||||||
import haxework.provider.Provider;
|
import haxework.provider.Provider;
|
||||||
import flash.utils.ByteArray;
|
import flash.utils.ByteArray;
|
||||||
import flash.events.Event;
|
import flash.events.Event;
|
||||||
import promhx.Deferred;
|
|
||||||
|
|
||||||
class BaseLoader<T> extends Deferred<T> implements ILoader<T> {
|
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;
|
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) {
|
if (busy) {
|
||||||
throwError("Busy");
|
throwError("Busy");
|
||||||
} else {
|
} else {
|
||||||
@@ -50,7 +52,7 @@ class BaseLoader<T> extends Deferred<T> implements ILoader<T> {
|
|||||||
//internalRequest(prepareUrl(url));
|
//internalRequest(prepareUrl(url));
|
||||||
Provider.get(ILoaderManager).add(this);
|
Provider.get(ILoaderManager).add(this);
|
||||||
}
|
}
|
||||||
return this;
|
return this.promise();
|
||||||
}
|
}
|
||||||
|
|
||||||
private function cockTimeout():Void {
|
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) {
|
if (busy) {
|
||||||
throwError("Busy");
|
throwError("Busy");
|
||||||
} else {
|
} else {
|
||||||
busy = true;
|
busy = true;
|
||||||
internalFromBytes(data);
|
internalFromBytes(data);
|
||||||
}
|
}
|
||||||
return this;
|
return this.promise();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function GET(url:String, data:Dynamic = null):Deferred<T> {
|
private function fromAssets(url:String):Promise<T> {
|
||||||
#if (openfl && lime)
|
|
||||||
if (StringTools.startsWith(url, "%assets%")) {
|
|
||||||
try {
|
try {
|
||||||
var path:String = url.substring(9);
|
var path:String = url.substring(9);
|
||||||
// ToDo: get text resources with getText method
|
// ToDo: get text resources with getText method
|
||||||
var extension:String = path.substring(path.lastIndexOf(".")+1, path.length);
|
var extension:String = path.substring(path.lastIndexOf(".")+1, path.length);
|
||||||
if (extension == "json" || extension == "txt") {
|
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);
|
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);
|
var bytes:ByteArray = openfl.Assets.getBytes(path);
|
||||||
if (bytes == null) {
|
if (bytes == null) {
|
||||||
throwError("Bytes is null for asset: " + path);
|
throwError("Bytes is null for asset: " + path);
|
||||||
return this;
|
return this.promise();
|
||||||
} else {
|
} else {
|
||||||
return fromBytes(bytes);
|
return fromBytes(bytes);
|
||||||
}
|
}
|
||||||
} catch (error:Dynamic) {
|
} catch (error:Dynamic) {
|
||||||
throwError(error);
|
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
|
#end
|
||||||
return request(url, URLRequestMethod.GET, data);
|
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);
|
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);
|
return request(url, URLRequestMethod.DELETE, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ class BaseMediaLoader<T> extends BaseLoader<T> {
|
|||||||
private var loader:Loader;
|
private var loader:Loader;
|
||||||
|
|
||||||
override private function internalRequest(url:String):Void {
|
override private function internalRequest(url:String):Void {
|
||||||
|
L.d("BaseMediaLoader", "request: " + url);
|
||||||
cockTimeout();
|
cockTimeout();
|
||||||
loader = buildLoader();
|
loader = buildLoader();
|
||||||
loader.load(new URLRequest(url), buildLoaderContext(false));
|
loader.load(new URLRequest(url), buildLoaderContext(false));
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class BatchLoader<T> {
|
|||||||
public function GET(urls:Array<String>):Promise<Array<T>> {
|
public function GET(urls:Array<String>):Promise<Array<T>> {
|
||||||
return Promise.whenAll(urls.map(function(url:String):Promise<T> {
|
return Promise.whenAll(urls.map(function(url:String):Promise<T> {
|
||||||
var loader:ILoader<T> = Type.createInstance(factory, []);
|
var loader:ILoader<T> = Type.createInstance(factory, []);
|
||||||
return loader.GET(url).promise();
|
return loader.GET(url);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,18 +1,18 @@
|
|||||||
package haxework.net;
|
package haxework.net;
|
||||||
|
|
||||||
|
import promhx.Promise;
|
||||||
import flash.utils.ByteArray;
|
import flash.utils.ByteArray;
|
||||||
import promhx.Deferred;
|
|
||||||
|
|
||||||
interface ILoader<T> {
|
interface ILoader<T> {
|
||||||
public var timeout(default, default):Int;
|
public var timeout(default, default):Int;
|
||||||
public var busy(default, null):Bool;
|
public var busy(default, null):Bool;
|
||||||
public var completed(default, null):Float;
|
public var completed(default, null):Float;
|
||||||
|
|
||||||
public function request(url:String, method:String, data:Dynamic = null):Deferred<T>;
|
public function request(url:String, method:String, data:Dynamic = null):Promise<T>;
|
||||||
public function fromBytes(data:ByteArray):Deferred<T>;
|
public function fromBytes(data:ByteArray):Promise<T>;
|
||||||
public function GET(url:String, data:Dynamic = null):Deferred<T>;
|
public function GET(url:String, data:Dynamic = null):Promise<T>;
|
||||||
public function POST(url:String, data:Dynamic = null):Deferred<T>;
|
public function POST(url:String, data:Dynamic = null):Promise<T>;
|
||||||
public function DELETE(url:String, data:Dynamic = null):Deferred<T>;
|
public function DELETE(url:String, data:Dynamic = null):Promise<T>;
|
||||||
public function cancel():Void;
|
public function cancel():Void;
|
||||||
|
|
||||||
public function run():Void;
|
public function run():Void;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package haxework.net.order;
|
package haxework.net.order;
|
||||||
|
|
||||||
|
import promhx.Promise;
|
||||||
import promhx.Deferred;
|
import promhx.Deferred;
|
||||||
|
|
||||||
typedef Order<T> = {
|
typedef Order<T> = {
|
||||||
@@ -12,6 +13,6 @@ typedef Order<T> = {
|
|||||||
interface IOrderSupplier {
|
interface IOrderSupplier {
|
||||||
public var orders(default, null):Map<String, Order<Dynamic>>;
|
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;
|
public function release(url:String, force:Bool = false):Void;
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package haxework.net.order;
|
package haxework.net.order;
|
||||||
|
|
||||||
|
import promhx.Promise;
|
||||||
import promhx.Deferred;
|
import promhx.Deferred;
|
||||||
import haxework.net.order.IOrderSupplier.Order;
|
import haxework.net.order.IOrderSupplier.Order;
|
||||||
import flash.display.BitmapData;
|
import flash.display.BitmapData;
|
||||||
@@ -14,12 +15,12 @@ class OrderSupplier implements IOrderSupplier {
|
|||||||
orders = new Map<String, Order<Dynamic>>();
|
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)) {
|
if (orders.exists(url)) {
|
||||||
var order:Order<T> = orders.get(url);
|
var order:Order<T> = orders.get(url);
|
||||||
order.clients++;
|
order.clients++;
|
||||||
//L.d(TAG, "Request(" + order.clients + "): " + url);
|
//L.d(TAG, "Request(" + order.clients + "): " + url);
|
||||||
return order.deferred;
|
return order.deferred.promise();
|
||||||
} else {
|
} else {
|
||||||
var deferred = new Deferred<T>();
|
var deferred = new Deferred<T>();
|
||||||
var order:Order<T> = {
|
var order:Order<T> = {
|
||||||
@@ -43,7 +44,7 @@ class OrderSupplier implements IOrderSupplier {
|
|||||||
if (orders.exists(url)) orders.get(url).deferred.throwError(error);
|
if (orders.exists(url)) orders.get(url).deferred.throwError(error);
|
||||||
orders.remove(url);
|
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> {
|
private function buildLoader<T>(clazz:Class<T>):ILoader<T> {
|
||||||
var c:Class<Dynamic> = clazz;
|
var c:Class<Dynamic> = clazz;
|
||||||
return if (c == BitmapData) {
|
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.timeout = 7000; //ToDo: hardcode timeout for loading images
|
||||||
loader;
|
loader;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user