微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

OpenFeint的解锁成就

如何解决OpenFeint的解锁成就

| 我是OpenFeint的新手,实际上是从今天开始将其集成到我的游戏中的。我不明白每个使用开发人员的OpenFeint都应该知道的简单事情。这是从OpenFeint官方教程中解锁成就的示例:
new Achievement(\"achievementID\").unlock(new Achievement.UnlockCB () {
  @Override public void onSuccess() {
      MyClass.this.setResult(Activity.RESULT_OK);
      MyClass.this.finish();
  }
  @Override public void onFailure(String exceptionMessage) {
        Toast.makeText( MyClass.this,\"Error (\" + exceptionMessage + \") unlocking achievement.\",Toast.LENGTH_SHORT).show();
        MyClass.this.setResult(Activity.RESULT_CANCELED);
        MyClass.this.finish();
   }
});
问题是我不想在onSuccess或onFailure中完成活动,我只是不需要在这里做任何事情。如果仅将这两种方法保留为无代码状态,我的游戏就会冻结,并且变得完全无响应。我该怎么办?提前致谢。 附言您如何创建测试用户?我已经尝试了所有可能的电子邮件密码组合,但无法使用。     

解决方法

        将与互联网的所有通信都放在AsyncTask中通常是一个好主意。并非每个人都有快速的互联网,因此这可以确保主线程不会因此而锁定。 话虽如此,我认为setResult函数用于startActivityForResult构造中。如果活动完成,以这种方式创建的意图只会发送回原始类。因此,要解决此问题,您需要将代码放在单独的活动中。     ,        我只是在Utility类中编写了此方法
public static void unlockAchievement(final String achievementId,final Activity context){
    final Achievement achievement = new Achievement(achievementId);
    achievement.unlock(new Achievement.UnlockCB() {

        @Override
        public void onSuccess(boolean newUnlock) {
            context.setResult(Activity.RESULT_OK);

        }

        @Override
        public void onFailure(String exceptionMessage) {                
            context.setResult(Activity.RESULT_CANCELED);
            Toast.makeText(context,\"Error (\" + exceptionMessage + \") unlocking achievement.\",Toast.LENGTH_SHORT).show();
            FlurryAgent.onError(\"unlockingAchievement\",exceptionMessage,this.getClass().getSimpleName());
        }

    });

}
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。