load from openfl assets

This commit is contained in:
2014-01-13 10:19:35 +04:00
parent 3b4953364e
commit 9618e2e042
5 changed files with 39 additions and 1 deletions

View File

@@ -16,7 +16,7 @@ class BaseLogger implements ILogger {
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)) {
cast(error, Error).getStackTrace();
} else if (Std.is(error, ErrorEvent)) {

View File

@@ -54,6 +54,13 @@ class BaseLoader<T> implements ILoader<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);
}

View File

@@ -1,5 +1,7 @@
package haxework.net;
import haxe.Timer;
import flash.utils.ByteArray;
import flash.net.URLRequestHeader;
import flash.net.URLRequestMethod;
import haxework.net.callback.ICallback;
@@ -41,6 +43,18 @@ class BaseURLLoader<T> extends BaseLoader<T> {
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 {
var loader:URLLoader = new URLLoader();
loader.dataFormat = dataFormat;

View File

@@ -14,4 +14,8 @@ class BytesLoader extends BaseURLLoader<ByteArray> {
override private function extrudeResult(e:Event):ByteArray {
return cast(cast(e.currentTarget, URLLoader).data, ByteArray);
}
override private function extrudeResultFromBytes(bytes:ByteArray):ByteArray {
return bytes;
}
}

View File

@@ -1,5 +1,6 @@
package haxework.net;
import flash.utils.ByteArray;
import flash.errors.Error;
import flash.events.Event;
import flash.net.URLLoader;
@@ -18,4 +19,16 @@ class JsonLoader<T> extends BaseURLLoader<T> {
}
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;
}
}