gwt中 java与js 的相互调用

2 篇文章 0 订阅
2 篇文章 0 订阅

最近在研究 libgdx  gwt的 java 和js 的 相互调用(客户端java和 js 的相互调用)。


成功demo;


java 代码:

package com.mygdx.jsnitest;

/**
 * 
* demo:
* 		JsniTest jsniTest = new JsniTest();
*		jsniTest.alert("Hello MyGdxGame!");
*		jsniTest.jsCallJava();
* @ClassName: JsniTest 
* @date 2015年6月10日 下午4:37:45 
* @version V1.0
 */
public class JsniTest {

	/**
	 * java  调用  js alert方法
	 */
	public  native void alert(String str)
	 /*-{ 
	    $wnd.alertStr(str); 
	}-*/;
	
	/**
	 * java 调用 js  (在这个方法中会先 调用一次outJsCallGwt 方法 类似于声明该方法[必须]。 在js 的callJavafunction 方法中会调用 outJsCallGwt方法)
	 */
	public  native void jsCallJava()/*-{
	  	var instance = this;
		instance.@com.mygdx.jsnitest.JsniTest::outJsCallGwt(Ljava/lang/String;)("str");
		$wnd.callJavafunction(); 
	}-*/;
	
	/**
	 * js 中 回调 java 的方法  此方法需要先调用一次
	 */
	public  native void outJsCallGwt(String str)/*-{
		var weather = this;
	 	$wnd.outJsCallGwt = function (str) { 
		    weather.@com.mygdx.jsnitest.JsniTest::callback(Ljava/lang/String;)(str);
    	};
	}-*/;
	
	/**
	 * java 方法  (调用alert 是方便在网页上看到回调到java端的结果)
	 */
	public   void callback(String str){
		alert("Hello callback! "+str);
	}
}

js 代码:

 <script>
              function handleMouseDown(evt) {
                evt.preventDefault();
                evt.stopPropagation();
                evt.target.style.cursor = 'default';
              }

              function handleMouseUp(evt) {
                evt.preventDefault();
                evt.stopPropagation();
                evt.target.style.cursor = '';
              }
              function alertStr(str){
              	alert("str:"+str);
              }
              function callJavafunction(){
              	outJsCallGwt("callJavafunction");
              }
              document.getElementById('embed-html').addEventListener('mousedown', handleMouseDown, false);
              document.getElementById('embed-html').addEventListener('mouseup', handleMouseUp, false);
       </script>

其中handleMouseDown 和 handleMouseUp 是libgdx 自动生成的方法(可以不用管)

callJavafunction 是js 调用java端的方法(注意调用的java方法要先在java端调用一次 【见 java代码里的注释】),alertStr方法时java端调用的js方法。


测试成功 ,libgdx gwt可以成功编译发布。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值