gpt4 book ai didi

javascript - 如何在 GWT 中公开类功能

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:36:30 26 4
gpt4 key购买 nike

我有一个用 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;
}-*/;

}

GameControl.java

package game.client;
public class GameControl {
public boolean isEmpty(int id){
// does stuff...
return true;
}
}

所以,GWT 确实编译了代码,我看到正在构建一个 GameControl_0 对象并将其设置到 $wnd.game 中,但没有 isEmpty () 要找到的方法。

我预期的最终结果是将 window.game 作为 GameControl 的实例,并使用 GameControl 公开的所有公共(public)方法。

我该怎么做?

编辑根据 @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();
}

}

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;
}
}

但仍然没有任何代码被导出(特别是 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;
}-*/;

还有一个框架叫gwt-exporter , 它可能会让你的事情变得更容易

关于javascript - 如何在 GWT 中公开类功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10029656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com