gwt中 java与js 的相互调用
2015-06-10 16:40
363 查看
最近在研究 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可以成功编译发布。
成功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可以成功编译发布。
相关文章推荐
- 在Windows 8.1的IE 11中屏蔽双击放大功能
- 通过Mootools 1.2来操纵HTML DOM元素
- WEB标准网页布局中尽量不要使用的HTML标签
- Flash 与 html 的一些实用技巧
- html工作中表格<tbody>标签的使用技巧
- HTML 向 XHTML1.0 兼容性指导
- C#自写的一个HTML解析类(类似XElement语法)
- 没有文件大小限制并免费的PDF到HTML转换工具
- css实现气泡框效果(实例加图解)
- html链接与文本标签们
- html活用软字符连接符
- 浅谈html中id和name的区别实例代码
- HTML <!DOCTYPE> 标签
- asp中实现清除html的函数
- Android的TextView与Html相结合的具体方法
- jQuery设置和获取HTML、文本和值示例
- 『jQuery』.html(),.text()和.val()的概述及使用
- php下过滤HTML代码的函数
- PHP HTML代码串截取代码