我正在使用Libgdx编写一个GWT应用程序&在运行时加载正确的休息库时遇到一些困难。
在我的核心gradle项目中,我已经定义了一个" RestWrapper"允许访问特定于平台的REST功能的接口(在GWT,RestyGWT的情况下)。当HTML5启动程序运行时,它将它的实现传递给核心项目中的LibGDX游戏类。
然而,当运行HTML5项目时,编译的JS引发了这个错误:
Breaking on exception: TypeError: Cannot read property 'getRestWrapper' of undefined
问题似乎出现在第一个界面(PlatformWrapper)上。 我理解GWT编译器在接口方面有点笨拙,我应该采用不同的方法从我的核心项目运行GWT特定代码吗?
调用代码(在核心项目中:)
UserSessionToken token =client.getPlatform().getRestWrapper().getRestLogin().attemptLogin(userNameBox.getText(),passwordBox.getText());
接口(核心项目中):
PlaformWrapper
public interface PlatformWrapper {
public RestWrapper getRestWrapper();....
RestWrapper
/* Platform independent wrapper for REST services */
public interface RestWrapper {
public RestLogin getRestLogin();....
实施(在HTML5项目中):
PlatformWrapper(顶级)
public class GWTWrapper implements PlatformWrapper {
public RestWrapper gwtRestWrapper;
public GWTWrapper(){
gwtRestWrapper = new GWTRestWrapper();
}
@Override
public RestWrapper getRestWrapper() {
return gwtRestWrapper;
}
GWTRestWrapper:
public class GWTRestWrapper implements RestWrapper {
public RestLogin restLogin;
public RestPortal restPortal;
public RestRegister restRegister;
public GWTRestWrapper(){
restLogin = new GWTRestLogin(); //GWTRest Logic
restRegister = new GWTRestRegister();
restPortal = new GWTRestPortal();
}
@Override
public RestLogin getRestLogin() {
return restLogin;
}
干杯。
答案 0 :(得分:1)
工作变动:
public ApplicationListener getApplicationListener () {
setLoadingListener(new LoadingListener(){
@Override
public void beforeSetup() {
// TODO Auto-generated method stub
}
@Override
public void afterSetup() {
// TODO Auto-generated method stub
wrapper = new GWTWrapper();
client.setPlatform(wrapper);
}
});
return client;