如何使用 Startactivity 并使调用 Cocos2d 层保持活动状态 (Android/Java)?

发布于 2024-12-23 05:44:03 字数 614 浏览 1 评论 0原文

我正在尝试使用 Cosos2d for Android 框架 (Java) 将我的 iPhone Cocos2d 游戏移植到 Android。

当我从主要活动启动 PreferenceActivity 时遇到问题。这是我的设置:

(1)HelloWordActivity.java: 初始化Cocos2d环境并启动GameLayer.scene

(2)Gamelayer.scene: 向用户展示游戏,但也有一个按钮来显示从 Gamelayer 类调用的设置面板,如下所示:

       Intent intent = new Intent(Intent.ACTION_VIEW);
       intent.setClassName(helloworldactivity, ShowSettingsActivity.class.getName());
       helloworldactivity.startActivity(intent);

这显示了首选项活动很好,但是当关闭首选项并返回到我的游戏时,它似乎没有持续存在(它被重新加载/重新启动并且不保留其状态)。

如何在不破坏 Cocos2d 中当前游戏会话的情况下向用户呈现标准的 Android 首选项屏幕?

I'm trying to port my iPhone Cocos2d game to Android using the Cosos2d for Android framework (Java).

I'm running into a problem when I start PreferenceActivity from my main activity. This is my setup:

(1) HelloWordActivity.java:
Inits the Cocos2d environment and starts GameLayer.scene

(2) Gamelayer.scene:
Presents the user with the game but also has a button to show the settingspane which gets called from the Gamelayer class like this:

       Intent intent = new Intent(Intent.ACTION_VIEW);
       intent.setClassName(helloworldactivity, ShowSettingsActivity.class.getName());
       helloworldactivity.startActivity(intent);

This shows the Preference Activity just fine, but when closing the preferences and returning to my game it appears it did not persist (it get's reloaded/restarted and does not retain it's state).

How can I present the user with a standard Android preferences screen without destroying the current game session in Cocos2d ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

陌上青苔 2024-12-30 05:44:03

从你的课程名称来看,我假设你使用 Dan 的教程作为入门
确保删除 dan 的 onStop() 覆盖方法,该方法在您加载首选项时被调用,并且调用

CCDirector.sharedDirector().end();

删除它应该为您完成

我确实注意到您放弃并切换到 andEngine ,这也是一个不错的引擎,但我认为无论如何我都会回答这个问题

from the names of your classes , I'm assuming you used Dan's tutorial as a starter
make sure you remove dan's onStop() override method , that gets called when you are loading the preferences and it calls

CCDirector.sharedDirector().end();

removing this should do it for you

I did notice that you gave up and switched to andEngine , that's a nice engine too but I thought I'd answer this one anyway

枫林﹌晚霞¤ 2024-12-30 05:44:03

您需要获取主要活动才能开始新活动,我希望此代码对您有所帮助

Activity context = CCDirector.sharedDirector().getActivity();
Intent intent = new Intent(Intent.ACTION_VIEW);
       intent.setClassName(helloworldactivity, ShowSettingsActivity.class.getName());
       context.startActivity(intent);

You need to get the main activity to start new activity, I hope this code will help you

Activity context = CCDirector.sharedDirector().getActivity();
Intent intent = new Intent(Intent.ACTION_VIEW);
       intent.setClassName(helloworldactivity, ShowSettingsActivity.class.getName());
       context.startActivity(intent);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文