【问题标题】:How do I use Startactivity and leave the calling Cocos2d Layer active (Android/Java)?如何使用 Startactivity 并使调用的 Cocos2d 层保持活动状态(Android/Java)?
【发布时间】:2011-12-29 12:43:56
【问题描述】:

我正在尝试使用 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);

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

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

【问题讨论】:

  • 我放弃了 Cocos2D for Android。首先尝试了 WiEngine,但最终选择了 ANDEngine,这对我的目的来说已经足够好了(一个没有太多动画的简单纸牌游戏)。活动的切换不会像 Cocos2d 的 java 端口那样破坏会话,而且屏幕会自动缩放到更大或更小的屏幕。

标签: java android android-activity preferences cocos2d-android


【解决方案1】:

根据您的课程名称,我假设您使用 Dan 的教程作为入门 确保删除 dan 的 onStop() 覆盖方法,当您加载首选项并调用时会调用该方法

CCDirector.sharedDirector().end();

删除它应该会为你做的

我确实注意到您放弃并切换到 andEngine ,这也是一个不错的引擎,但我想我还是会回答这个问题

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-24
      • 2014-06-20
      • 1970-01-01
      • 2012-03-09
      • 2012-04-10
      相关资源
      最近更新 更多