GWT-libGDX 平台特定代码
GWT-libGDX platform specific code
我目前正在开发 libGDX 一款跨平台游戏。我想根据我所在的平台编译代码。
例如如果我用 GWT 编译它应该选择 Class.js.java,当 运行 通常用 Java 时它应该选择 Class.java。
这可能吗?
当然可以。您可以创建一个接口契约,每个模块都应该实现它。
在您的核心模块中创建接口,因为它需要与其他模块共享。
public interface MultiPlatformContract {
String whatPlatform();
}
您还为您的主要核心创建了一个构造函数 class,您将此实现作为参数添加到其中。我只是在这里调用它,但您可以存储它,将它传递给其他对象并稍后调用它的任何方法。
public MultiPlatformGame(MultiPlatform multiPlatformContract)
{
System.out.println(multiPlatform.whatPlatform());
}
一旦您将此合同添加到构造函数中,您的所有模块显然都会失败,因为您需要为其构造函数提供一个实现。因此,我们为每个要为其开发的模块创建一个实现。您可以在核心中创建它,但在特定模块中创建它更有意义,因为每个模块都应该为自己的目的使用一个。
public class DesktopPlatform implements MultiPlatformContract {
public String whatPlatform() {
return "I run on desktop."
}
}
在每个平台模块的主要 class / 入口点中,您实例化游戏的地方现在出现错误,因为您需要向构造函数提供 MultipPlatformContract
。在桌面上,我将合同的桌面实现传递给它。
public static void main (String[] arg) {
new LwjglApplication(new LibGdxTest(new DesktopPlatform()), config);
}
就是这样。这主要用于访问不同的 API。就像 Steam API 应该从桌面访问并且 Google Play 应该为 Android 实施。
我相信您指的是 GWT 的 "super-source" 功能,它允许您在为 GWT 编译时用备用源替换 类。
有关其工作原理的详细信息,请参阅标题为 "Overriding one package implementation with another" 的部分中的 documentation。
我目前正在开发 libGDX 一款跨平台游戏。我想根据我所在的平台编译代码。 例如如果我用 GWT 编译它应该选择 Class.js.java,当 运行 通常用 Java 时它应该选择 Class.java。 这可能吗?
当然可以。您可以创建一个接口契约,每个模块都应该实现它。
在您的核心模块中创建接口,因为它需要与其他模块共享。
public interface MultiPlatformContract {
String whatPlatform();
}
您还为您的主要核心创建了一个构造函数 class,您将此实现作为参数添加到其中。我只是在这里调用它,但您可以存储它,将它传递给其他对象并稍后调用它的任何方法。
public MultiPlatformGame(MultiPlatform multiPlatformContract)
{
System.out.println(multiPlatform.whatPlatform());
}
一旦您将此合同添加到构造函数中,您的所有模块显然都会失败,因为您需要为其构造函数提供一个实现。因此,我们为每个要为其开发的模块创建一个实现。您可以在核心中创建它,但在特定模块中创建它更有意义,因为每个模块都应该为自己的目的使用一个。
public class DesktopPlatform implements MultiPlatformContract {
public String whatPlatform() {
return "I run on desktop."
}
}
在每个平台模块的主要 class / 入口点中,您实例化游戏的地方现在出现错误,因为您需要向构造函数提供 MultipPlatformContract
。在桌面上,我将合同的桌面实现传递给它。
public static void main (String[] arg) {
new LwjglApplication(new LibGdxTest(new DesktopPlatform()), config);
}
就是这样。这主要用于访问不同的 API。就像 Steam API 应该从桌面访问并且 Google Play 应该为 Android 实施。
我相信您指的是 GWT 的 "super-source" 功能,它允许您在为 GWT 编译时用备用源替换 类。
有关其工作原理的详细信息,请参阅标题为 "Overriding one package implementation with another" 的部分中的 documentation。