[samples] update loader sample
This commit is contained in:
@@ -3,4 +3,6 @@
|
|||||||
-lib haxework
|
-lib haxework
|
||||||
-main LoaderExample.hx
|
-main LoaderExample.hx
|
||||||
-swf-version 10.1
|
-swf-version 10.1
|
||||||
|
-swf-header 800:600:30:000000
|
||||||
-swf target/LoaderExample.swf
|
-swf target/LoaderExample.swf
|
||||||
|
#-as3 target
|
||||||
|
|||||||
3
samples/02-loader/run.sh
Normal file
3
samples/02-loader/run.sh
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
. /opt/sdk/haxe/3.4.7/activate
|
||||||
|
haxe build.hxml && flashplayerdebugger target/LoaderExample.swf
|
||||||
@@ -1,43 +1,46 @@
|
|||||||
package;
|
package;
|
||||||
|
|
||||||
|
import haxework.net.manage.LoaderManager;
|
||||||
|
import haxework.net.manage.ILoaderManager;
|
||||||
import flash.display.Bitmap;
|
import flash.display.Bitmap;
|
||||||
import flash.Lib;
|
import flash.Lib;
|
||||||
import flash.display.BitmapData;
|
import flash.display.BitmapData;
|
||||||
import haxework.net.ImageLoader;
|
import haxework.net.ImageLoader;
|
||||||
import haxework.net.JsonLoader;
|
import haxework.net.JsonLoader;
|
||||||
|
|
||||||
|
|
||||||
typedef ChannelItem = {
|
typedef ChannelItem = {
|
||||||
var id:String;
|
var id:String;
|
||||||
var maker:String;
|
var maker:String;
|
||||||
var title:String;
|
var title:String;
|
||||||
var message:String;
|
var message:String;
|
||||||
}
|
}
|
||||||
|
|
||||||
class LoaderExample {
|
class LoaderExample {
|
||||||
|
|
||||||
public static function main() {
|
@:provide private static var manager:ILoaderManager;
|
||||||
// Json
|
|
||||||
trace("Json Request");
|
|
||||||
new JsonLoader().GET("http://umix.tv/channel/data2/renova.json")
|
|
||||||
.then(function(channel:Array<ChannelItem>) {
|
|
||||||
trace("Json Ok: " + channel.length);
|
|
||||||
for (item in channel) {
|
|
||||||
trace(item.id + ": " + item.message);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catchError(function(error) {
|
|
||||||
trace(error);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Image
|
public static function main() {
|
||||||
trace("Image Request");
|
manager = new LoaderManager(1);
|
||||||
new ImageLoader().GET("http://umix.tv/channel/block/renova/1")
|
|
||||||
.then(function(image:BitmapData) {
|
// Json
|
||||||
trace("Image Ok: " + image.width + "x" + image.height);
|
trace("Json Request");
|
||||||
Lib.current.addChild(new Bitmap(image));
|
new JsonLoader().GET("http://umix.tv/channel/data2/renova.json")
|
||||||
})
|
.then(function(channel:Array<ChannelItem>) {
|
||||||
.catchError(function(error) {
|
trace('Json Ok: ${channel.length}');
|
||||||
trace(error);
|
for (item in channel) {
|
||||||
});
|
trace('${item.id}: ${item.message}');
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
.catchError(function(error) trace(error));
|
||||||
|
|
||||||
|
// Image
|
||||||
|
trace("Image Request");
|
||||||
|
new ImageLoader().GET("http://umix.tv/channel/block/renova/1")
|
||||||
|
.then(function(image:BitmapData) {
|
||||||
|
trace('Image Ok: ${image.width}x${image.height}}');
|
||||||
|
Lib.current.addChild(new Bitmap(image));
|
||||||
|
})
|
||||||
|
.catchError(function(error) trace(error));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,15 +30,18 @@ class ProvideMacro {
|
|||||||
case ComplexType.TPath(p): p.name;
|
case ComplexType.TPath(p): p.name;
|
||||||
default: null;
|
default: null;
|
||||||
}
|
}
|
||||||
|
var isStatic = Lambda.exists(field.access, function(a: Access) return a == AStatic);
|
||||||
result.push({
|
result.push({
|
||||||
name: field.name,
|
name: field.name,
|
||||||
access: [Access.APublic],
|
access: isStatic ? [Access.APublic, Access.AStatic] : [Access.APublic],
|
||||||
pos: field.pos,
|
pos: field.pos,
|
||||||
kind: FieldType.FProp('get', 'set', type)
|
kind: FieldType.FProp('get', 'set', type)
|
||||||
});
|
});
|
||||||
|
var access = [Access.APrivate, Access.AInline];
|
||||||
|
if (isStatic) access.push(Access.AStatic);
|
||||||
result.push({
|
result.push({
|
||||||
name: 'get_${field.name}',
|
name: 'get_${field.name}',
|
||||||
access: [Access.APrivate, Access.AInline],
|
access: access,
|
||||||
pos: field.pos,
|
pos: field.pos,
|
||||||
kind: FieldType.FFun({
|
kind: FieldType.FFun({
|
||||||
args: [],
|
args: [],
|
||||||
@@ -49,7 +52,7 @@ class ProvideMacro {
|
|||||||
});
|
});
|
||||||
result.push({
|
result.push({
|
||||||
name: 'set_${field.name}',
|
name: 'set_${field.name}',
|
||||||
access: [Access.APrivate, Access.AInline],
|
access: access,
|
||||||
pos: field.pos,
|
pos: field.pos,
|
||||||
kind: FieldType.FFun({
|
kind: FieldType.FFun({
|
||||||
args: [{name: 'value', type: type}],
|
args: [{name: 'value', type: type}],
|
||||||
|
|||||||
@@ -2,13 +2,11 @@ package haxework.net;
|
|||||||
|
|
||||||
import promhx.Deferred;
|
import promhx.Deferred;
|
||||||
import promhx.Promise;
|
import promhx.Promise;
|
||||||
//import flash.utils.JSON;
|
|
||||||
import haxe.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;
|
||||||
import haxework.net.manage.ILoaderManager;
|
import haxework.net.manage.ILoaderManager;
|
||||||
import haxework.provider.Provider;
|
|
||||||
import flash.utils.ByteArray;
|
import flash.utils.ByteArray;
|
||||||
import flash.events.Event;
|
import flash.events.Event;
|
||||||
|
|
||||||
@@ -32,7 +30,9 @@ class BaseLoader<T> extends Deferred<T> implements ILoader<T> {
|
|||||||
private var data:Null<Dynamic>;
|
private var data:Null<Dynamic>;
|
||||||
private var timer:Timer;
|
private var timer:Timer;
|
||||||
|
|
||||||
public function new(?timeout = 0) {
|
@:provide private var manager:ILoaderManager;
|
||||||
|
|
||||||
|
public function new(timeout = 0) {
|
||||||
super();
|
super();
|
||||||
this.timeout = timeout;
|
this.timeout = timeout;
|
||||||
busy = false;
|
busy = false;
|
||||||
@@ -50,7 +50,7 @@ class BaseLoader<T> extends Deferred<T> implements ILoader<T> {
|
|||||||
var url:String = this.url;
|
var url:String = this.url;
|
||||||
//L.d(TAG, "Request: " + prepareUrl(url));
|
//L.d(TAG, "Request: " + prepareUrl(url));
|
||||||
//internalRequest(prepareUrl(url));
|
//internalRequest(prepareUrl(url));
|
||||||
Provider.get(ILoaderManager).add(this);
|
manager.add(this);
|
||||||
}
|
}
|
||||||
return this.promise();
|
return this.promise();
|
||||||
}
|
}
|
||||||
@@ -79,6 +79,7 @@ class BaseLoader<T> extends Deferred<T> implements ILoader<T> {
|
|||||||
return this.promise();
|
return this.promise();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (openfl && lime)
|
||||||
private function fromAssets(url:String):Promise<T> {
|
private function fromAssets(url:String):Promise<T> {
|
||||||
try {
|
try {
|
||||||
var path:String = url.substring(9);
|
var path:String = url.substring(9);
|
||||||
@@ -105,6 +106,7 @@ class BaseLoader<T> extends Deferred<T> implements ILoader<T> {
|
|||||||
return this.promise();
|
return this.promise();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#end
|
||||||
|
|
||||||
public function GET(url:String, data:Dynamic = null):Promise<T> {
|
public function GET(url:String, data:Dynamic = null):Promise<T> {
|
||||||
#if (openfl && lime)
|
#if (openfl && lime)
|
||||||
@@ -178,7 +180,7 @@ class BaseLoader<T> extends Deferred<T> implements ILoader<T> {
|
|||||||
data = null;
|
data = null;
|
||||||
busy = false;
|
busy = false;
|
||||||
completed = Math.NaN;
|
completed = Math.NaN;
|
||||||
Provider.get(ILoaderManager).release(this);
|
manager.release(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function cancel():Void {
|
public function cancel():Void {
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ class LoaderManager implements ILoaderManager {
|
|||||||
public var queue(default, null):Array<ILoader<Dynamic>>;
|
public var queue(default, null):Array<ILoader<Dynamic>>;
|
||||||
public var limit(default, default):Int;
|
public var limit(default, default):Int;
|
||||||
|
|
||||||
public function new() {
|
public function new(limit:Int = 10) {
|
||||||
queue = new Array<ILoader<Dynamic>>();
|
queue = new Array<ILoader<Dynamic>>();
|
||||||
actives = new Array<ILoader<Dynamic>>();
|
actives = new Array<ILoader<Dynamic>>();
|
||||||
limit = 10;
|
this.limit = limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function add(loader:ILoader<Dynamic>):Void {
|
public function add(loader:ILoader<Dynamic>):Void {
|
||||||
|
|||||||
Reference in New Issue
Block a user