Skip to content

Instantly share code, notes, and snippets.

@sonygod
Created April 18, 2013 09:55
Show Gist options
  • Select an option

  • Save sonygod/5411565 to your computer and use it in GitHub Desktop.

Select an option

Save sonygod/5411565 to your computer and use it in GitHub Desktop.
base haxe flash and js remoting use async
package ;
import haxe.ds.ObjectMap;
import haxe.Timer;
import haxe.remoting.ExternalConnection;
import tink.lang.Cls;
/**
* ...
* @author sonygod
*/
class FlashMain {
public function foo(x, y) { trace("outsidecall" + x + y); }
static var js = null;
static var hello;
public static var onData: Dynamic;
public static function main() {
var ctx = new haxe.remoting.Context();
ctx.addObject("FlashMain", FlashMain);
js = haxe.remoting.ExternalConnection.jsConnect("default", ctx);
var arr:Array<Int> = [1, 2];
var arr2=arr.slice(0, arr.length - 1);
hello = new Forwarder(js);
hello.sayHello("hi", "god", onCalljs);
}
public static function onCalljs(err, data) {
}
public static function __onData(args: Array<Dynamic>) {
//trace(args.toString() + "" + Timer.stamp() * 1000);
var recall=args.pop();
trace(args.toString() + "" + Timer.stamp() * 1000);
}
private static function __init__() : Void {
onData = Reflect.makeVarArgs(__onData);
}
}
class Forwarder implements Cls {
var fields:Hash<Dynamic> = new Hash<Dynamic>();
public var recallFuns:ObjectMap<Caller ,Dynamic>;
@:forward(!multiply) var target:ExternalConnection;
@:forward function fwd2(hello:HelloService) {
get: fields.get($name),
set: fields.set($name, param),
call:target.resolve("main").resolve("onData").call($argsRemoting)
}
public function new(target) {
this.target = target;
}
}
typedef Caller = {
id:String,
name:String
}
/** JsMain.hx
package ;
import js.Browser;
import haxe.remoting.ExternalConnection;
class JsMain {
public static var cnx = null;
static var ctx = null;
public static var onData: Dynamic;
private static function __init__() : Void {
onData = Reflect.makeVarArgs(__onData);
}
public static function main() {
ctx = new haxe.remoting.Context();
ctx.addObject("main",JsMain);
cnx = ExternalConnection.flashConnect("default", "myFlashObject", ctx);
}
//http://www.verydemo.com/demo_c98_i5393.html
public static function __onData(args: Array<Dynamic>) {
Browser.window.alert("length=" + args[2].id);
Test.bubblesort([1, 2, 9, 7, 6, 0.3], function (err, data) {
cnx = ExternalConnection.flashConnect("default", "myFlashObject", ctx);
cnx.FlashMain.onData.call([err,data,args[2]]);
} );
}
}
**/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment