Yuv*_*val 3 javascript gwt code-generation
我有一个用Java编写的类库,想要将它转换为Javascript.所有方法都非常简单,主要与操作集合有关.我有一个类,GameControl,我可以实例化,我希望它的方法暴露给页面上的其他Javascript代码.
我想用GWT.我在GWT中有一个正在运行的项目,但是我无法弄清楚如何公开GameControl类的实例(+功能).
我认为使用JSNI来暴露我的对象应该工作,但事实并非如此.这是它现在的样子的简短版本:
GameEntryPoint.java
import com.google.gwt.core.client.EntryPoint;
public class GameEntryPoint implements EntryPoint {
private GameControl _gameControl;
@Override
public void onModuleLoad() {
_gameControl = new GameControl();
expose();
}
public native void expose()/*-{
$wnd.game = this.@game.client.GameEntryPoint::_gameControl;
}-*/;
}
Run Code Online (Sandbox Code Playgroud)
GameControl.java
package game.client;
public class GameControl {
public boolean isEmpty(int id){
// does stuff...
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
所以,GWT确实编译了代码,我发现有一个GameControl_0
对象正在构建和设置$wnd.game
,但没有isEmpty()
找到方法.
我期望的最终结果是将所有公共方法暴露window.game
为一个实例.GameControl
GameControl
我怎样才能做到这一点?
编辑
根据@jusio
回复,使用JSNI公开window
显式工作的属性,但它太冗长了.我正在尝试gwt-exporter解决方案.我现在有
GameEntryPoint.java
package game.client;
import org.timepedia.exporter.client.ExporterUtil;
import com.google.gwt.core.client.EntryPoint;
public class GameEntryPoint implements EntryPoint {
@Override
public void onModuleLoad() {
ExporterUtil.exportAll();
}
}
Run Code Online (Sandbox Code Playgroud)
RoadServer.java
package game.client;
import org.timepedia.exporter.client.Export;
import org.timepedia.exporter.client.ExportPackage;
import org.timepedia.exporter.client.Exportable;
@ExportPackage("game")
@Export("RoadServer")
public class RoadServer implements Exportable {
int _index;
int _id;
public RoadServer(int index,int id){
this._id=id;
this._index=index;
}
}
Run Code Online (Sandbox Code Playgroud)
但仍然没有导出任何代码(特别是没有RoadServer
).
您只暴露了该实例GameControl
.如果要公开其他方法,则还必须公开它们.例如:
public native void expose()/*-{
var control = this.@game.client.GameEntryPoint::_gameControl;
var gameInstance = {
gameControl: control,
isEmpty:function(param){
control.@game.client.GameEntryPoint::isEmpty(*)(param);
}
}
$wnd.game = gameInstance;
}-*/;
Run Code Online (Sandbox Code Playgroud)
还有一个名为gwt-exporter的框架,它可能会让您更轻松
归档时间: |
|
查看次数: |
1280 次 |
最近记录: |