如何从活动中正确启动libgdx游戏并将数据传递给它?

时间:2017-10-02 11:16:48

标签: java android android-intent libgdx

我希望在用户从我的Android应用程序登录'/'登录'到libgdx游戏后传递一些凭据数据。

首先我想问你 - 使用意图开始我的游戏是不错的做法?

我已将manifest.xml文件中的启动活动声明为.LoginActivity(例如),然后在用户执行某些操作后 - android端正在使用下一个代码启动游戏:

public class SomeTest {
    private HBaseTestingUtility testingUtil = new HBaseTestingUtility();

    @Before
    public void setup() throws Exception {
        testingUtil.startMiniDFSCluster(1);
    }

    @After
    public void tearDown() throws IOException {
        testingUtil.shutdownMiniDFSCluster();
    }

    @Test
    public void test() throws Exception {
        DistributedFileSystem fs = testingUtil.getDFSCluster().getFileSystem();
        final Path dstPath = new Path("/your/path/file.txt);
        final Path srcPath = new Path(SomeTest.class.getResource("file.txt").toURI());
        fs.copyFromLocalFile(srcPath, dstPath);
        ...
    }
}

是否有一些最佳实践如何从活动开始我的游戏?

另一个相关问题是 - 如何将数据从android acitivity传递给libgdx游戏?

我在此链接中看到了一些建议:https://github.com/libgdx/libgdx/wiki/Interfacing-with-platform-specific-code

我还没有使用Swarm框架(可能稍后),我想使用自己的接口将数据传递给游戏。

我已经声明了下一个界面:

private void initializeListeners(){

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getBaseContext(), AndroidLauncher.class);
                startActivity(intent);
            }
        });
    }

并在游戏核心部分的Screen实现中实现它,像这样:

public interface DataPasser {
    void passData(String userName);
}

我只是用传递的数据绘制一个字符串。

主要问题是 - 什么时候应该在我的android部分调用这个方法?

我正在调用Intent,游戏开始时没有在意图中传递数据 - 这就是为什么我问 - 什么是开始游戏的最佳方式。

我应该如何传递数据并开始游戏 - 请提出建议。

2 个答案:

答案 0 :(得分:1)

你的代码不多,所以很多都是一般的提示。

在核心模块中,添加一个带有所需参数的构造函数(LibGDX游戏本身,假设您使用了项目生成器)。

添加一个构造函数,您可以在其中输入两个字符串:用户名和密码。

您使用Intent将数据从一个活动传递到游戏活动,游戏活动将Strings发送到游戏的构造函数。

答案 1 :(得分:0)

在这里编写你的android活动并在构造函数中传递userName。

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
*/
}

这是你的核心mainClass。

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