大家都知道用java写CS程序非常麻烦,开发效率远不如winform,但是
用flex来做UI不仅好看而且开发效率很高,所以幻想着能用flex来做
java桌面程序。
    经过大半年的摸索和测试,终于写出了SmartInvoke,它可以方便的实现
java与flex的互相调用,就像调用本地代码一样方便快捷。
    
    SmartInvoke (for java and flex)版构造于swt库之上。    下面是一些简单的代码片段:
     
     java调用flex:
               //添加flash容器到shell窗体
final FlashContainer container=new FlashContainer(shell);
//flash容器加载完毕会自动调用ILoadCompleteListener接口的run方法
container.completeListener=new ILoadCompleteListener(){ public void run() {
//传入一flash容器创建remoteObject代理对象
    RemoteObject remoteObject=new RemoteObject(container);
    //调用flex中demo.Test类的默认构造函数创建一对象,
    //并将该对象与本地remoteObject对象关联
    remoteObject.createRemoteObject("demo.Test", null);
    //调用关联类demo.Test的hello方法,并传入参数
    Object obj=remoteObject.call("hello", new Object[]{"Java"});
    //将flex返回的字符串转换为对应String类型,并打印出来
    System.out.println((String)obj);
}
};
//加载具体的swf文件
container.loadMovie(0, "E:/SmartInvokeTest.swf");
    
        flex调用java:
               
               //创建一代理对象
var remoteObject:RemoteObject=new RemoteObject();
//调用java中demo.JavaServer类的默认构造函数创建一对象,
//并将该对象与本地remoteObject对象关联
remoteObject.create("demo.JavaServer",null);
//调用demo.JavaServer类的hello方法,并传入字符串 flex
var ret:Object=remoteObject.call("hello",["flex"]);
//将java返回的字符串转换为对应String类型
Alert.show("java返回"+ret as String);
//回收关联类的内存
remoteObject.dispose();      是不是很简单呀!而且以上的中间代码都可以用CodeTransform代码转换工具自动生成代理类,
     代理类与服务类名称相同,方法也互相对应,在调用本地代理类方法的时候,此代理类方法
     就会调用对应服务类的对应方法,并返回该服务类方法的返回值,这样就大大简化了java与flex
     之间的互调,真正的实现了调用的本地化。
     
     项目地址:http://smartinvoke.cn/
     
     请大家支持下