Java 如何从活动中正确启动libgdx游戏并向其传递数据?
我想在用户从我的android应用程序“登录”/“登录”到libgdx游戏后传递一些凭据数据 首先我想问你,使用意图开始我的游戏是一种好的做法吗 我已经在manifest.xml文件中将我的开始活动声明为.LoginActivity(例如),然后在用户执行某些操作后,android端将使用下一个代码开始游戏:Java 如何从活动中正确启动libgdx游戏并向其传递数据?,java,android,android-intent,libgdx,Java,Android,Android Intent,Libgdx,我想在用户从我的android应用程序“登录”/“登录”到libgdx游戏后传递一些凭据数据 首先我想问你,使用意图开始我的游戏是一种好的做法吗 我已经在manifest.xml文件中将我的开始活动声明为.LoginActivity(例如),然后在用户执行某些操作后,android端将使用下一个代码开始游戏: private void initializeListeners(){ button.setOnClickListener(new View.OnClickListene
private void initializeListeners(){
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getBaseContext(), AndroidLauncher.class);
startActivity(intent);
}
});
}
是否有一些最佳实践我如何从活动开始我的游戏
另一个相关的问题是-如何将数据从android acitivity传递到libgdx游戏
我在这个链接上看到了一些建议:
我还没有使用Swarm框架(可能以后),我想使用自己的界面将数据传递到游戏中
我已经声明了下一个接口:
public interface DataPasser {
void passData(String userName);
}
并在游戏核心部分的屏幕内实现,smth如下:
@Override
public void passData(String userName) {
font.draw(batch, userName, 0, 450);
}
我只是用传递的数据绘制一个字符串
主要的问题是-我应该什么时候在我的android部件中调用这个方法
我正在调用意图,而游戏在意图中没有传递数据的情况下启动-这就是为什么我问-启动游戏的最佳方式是什么
我应该如何传递数据并开始游戏-请提出一些建议。您没有太多的代码,所以很多都是一般性的提示 在核心模块中,您添加了一个具有所需参数的构造函数(假设您使用了项目生成器,则LibGDX游戏本身) 您添加了一个构造函数,其中包含两个字符串:用户名和密码
使用Intent将数据从一个活动传递到游戏活动,游戏活动将字符串发送到游戏的构造函数 您没有太多的代码,所以很多都是一般性的提示 在核心模块中,您添加了一个具有所需参数的构造函数(假设您使用了项目生成器,则LibGDX游戏本身) 您添加了一个构造函数,其中包含两个字符串:用户名和密码
使用Intent将数据从一个活动传递到游戏活动,游戏活动将字符串发送到游戏的构造函数 在此处编写您的android活动,并在构造函数中传递用户名
class AndroidLauncher : AndroidApplication() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration config = AndroidApplicationConfiguration()
//pass your name here
mainClass = ApplicationCore("username");
initialize(mainClass, config);
}
/*
* all stuff code
*/
}
这是你的核心课程
public class ApplicationCore extends ApplicationAdapter {
public String userName;
public ApplicationCore(String userName) {
this.userName=userName;
// use this username whenever you want.
}
@Override
public void create() {
initGame();
}
private void initGame() {
//write code for initialize
}
@Override
public void render() {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
//render functionalities
}
@Override
public void dispose() {
batch.dispose();
}
@Override
public void resume() {
super.resume();
}
@Override
public void pause() {
super.pause();
}
}
在这里写下你的android活动,并在构造函数中传递用户名
class AndroidLauncher : AndroidApplication() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration config = AndroidApplicationConfiguration()
//pass your name here
mainClass = ApplicationCore("username");
initialize(mainClass, config);
}
/*
* all stuff code
*/
}
这是你的核心课程
public class ApplicationCore extends ApplicationAdapter {
public String userName;
public ApplicationCore(String userName) {
this.userName=userName;
// use this username whenever you want.
}
@Override
public void create() {
initGame();
}
private void initGame() {
//write code for initialize
}
@Override
public void render() {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
//render functionalities
}
@Override
public void dispose() {
batch.dispose();
}
@Override
public void resume() {
super.resume();
}
@Override
public void pause() {
super.pause();
}
}
基本上,您可以将字符串传递给游戏本身(可能在核心模块中)。您不需要为此使用接口或任何类,您可以直接发送数据并将其从何处绘制出来。谢谢您的建议。我尝试了第一个,它帮助了我。但它看起来还是有点难看,因为我应该使用构造函数或某些set方法将数据一直传递到目标类(用于绘制用户名的实现屏幕)。但我是libgdx新手——也许我使用父类的StpriteBatch对象在子类中使用它来绘制一些东西是错误的。我觉得直接将数据传递给类比处理接口和类更容易。你仍然可以使用构造器,你的任何项目都可以在核心模块中调用构造器。当然,你可以将字符串传递给游戏本身(可能在核心模块中)。您不需要为此使用接口或任何类,您可以直接发送数据并将其从何处绘制出来。谢谢您的建议。我尝试了第一个,它帮助了我。但它看起来还是有点难看,因为我应该使用构造函数或某些set方法将数据一直传递到目标类(用于绘制用户名的实现屏幕)。但我是libgdx新手——也许我使用父类的StpriteBatch对象在子类中使用它来绘制一些东西是错误的。我觉得直接将数据传递给类比处理接口和类更容易。您仍然可以使用构造函数,您拥有的任何项目都可以在核心模块中调用构造函数