load from openfl assets
This commit is contained in:
@@ -16,7 +16,7 @@ class BaseLogger implements ILogger {
|
|||||||
return "[" + level + "] " + tag + " - " + message + (error == null ? "" : " {" + error2strign(error) + "}");
|
return "[" + level + "] " + tag + " - " + message + (error == null ? "" : " {" + error2strign(error) + "}");
|
||||||
}
|
}
|
||||||
|
|
||||||
private function error2strign(error:Dynamic):String {
|
public static function error2strign(error:Dynamic):String {
|
||||||
return if (Std.is(error, Error)) {
|
return if (Std.is(error, Error)) {
|
||||||
cast(error, Error).getStackTrace();
|
cast(error, Error).getStackTrace();
|
||||||
} else if (Std.is(error, ErrorEvent)) {
|
} else if (Std.is(error, ErrorEvent)) {
|
||||||
|
|||||||
@@ -54,6 +54,13 @@ class BaseLoader<T> implements ILoader<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function GET(url:String, data:Dynamic = null):ICallback<T> {
|
public function GET(url:String, data:Dynamic = null):ICallback<T> {
|
||||||
|
#if openfl
|
||||||
|
if (StringTools.startsWith(url, "%assets%")) {
|
||||||
|
var path:String = url.substring(9);
|
||||||
|
var bytes:ByteArray = openfl.Assets.getBytes(path);
|
||||||
|
return fromBytes(bytes);
|
||||||
|
}
|
||||||
|
#end
|
||||||
return request(url, URLRequestMethod.GET, data);
|
return request(url, URLRequestMethod.GET, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package haxework.net;
|
package haxework.net;
|
||||||
|
|
||||||
|
import haxe.Timer;
|
||||||
|
import flash.utils.ByteArray;
|
||||||
import flash.net.URLRequestHeader;
|
import flash.net.URLRequestHeader;
|
||||||
import flash.net.URLRequestMethod;
|
import flash.net.URLRequestMethod;
|
||||||
import haxework.net.callback.ICallback;
|
import haxework.net.callback.ICallback;
|
||||||
@@ -41,6 +43,18 @@ class BaseURLLoader<T> extends BaseLoader<T> {
|
|||||||
loader.load(request);
|
loader.load(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override private function internalFromBytes(data:ByteArray):Void {
|
||||||
|
var data:T = extrudeResultFromBytes(data);
|
||||||
|
var c:ICallback<T> = callback;
|
||||||
|
c.callSuccessAsync(data);
|
||||||
|
Timer.delay(dispose, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function extrudeResultFromBytes(bytes:ByteArray):T {
|
||||||
|
throw "Abstract";
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
private function buildLoader():URLLoader {
|
private function buildLoader():URLLoader {
|
||||||
var loader:URLLoader = new URLLoader();
|
var loader:URLLoader = new URLLoader();
|
||||||
loader.dataFormat = dataFormat;
|
loader.dataFormat = dataFormat;
|
||||||
|
|||||||
@@ -14,4 +14,8 @@ class BytesLoader extends BaseURLLoader<ByteArray> {
|
|||||||
override private function extrudeResult(e:Event):ByteArray {
|
override private function extrudeResult(e:Event):ByteArray {
|
||||||
return cast(cast(e.currentTarget, URLLoader).data, ByteArray);
|
return cast(cast(e.currentTarget, URLLoader).data, ByteArray);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override private function extrudeResultFromBytes(bytes:ByteArray):ByteArray {
|
||||||
|
return bytes;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package haxework.net;
|
package haxework.net;
|
||||||
|
|
||||||
|
import flash.utils.ByteArray;
|
||||||
import flash.errors.Error;
|
import flash.errors.Error;
|
||||||
import flash.events.Event;
|
import flash.events.Event;
|
||||||
import flash.net.URLLoader;
|
import flash.net.URLLoader;
|
||||||
@@ -18,4 +19,16 @@ class JsonLoader<T> extends BaseURLLoader<T> {
|
|||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override private function extrudeResultFromBytes(bytes:ByteArray):T {
|
||||||
|
var str:String = null;
|
||||||
|
var data:T = null;
|
||||||
|
try {
|
||||||
|
str = bytes.readUTFBytes(bytes.length);
|
||||||
|
data = Json.parse(str);
|
||||||
|
} catch (error:Dynamic) {
|
||||||
|
throw new Error(error + ": " + str);
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user