2012-12-30 72 views
1

因此,在libgdx android項目中,我們有一個包含android活動的文件夾,另一個包含libgdx項目的源代碼。LibGdx如何從libgdx類返回到androidActivity

從我們使用initialize(new MyGdxGame(),cfg);

現在我需要知道如何回到像遊戲裏面一個libgdx類主菜單中的Android活動一個Android活動開始了「遊戲」 ......

我嘗試從Activity擴展類來獲得contextApplication,但我無法填充第二個參數,因爲程序不能識別libgdx類中的android類...

回答

1

使用Android特定的標準方法libGDX項目中的代碼是在libGDX核心項目中創建一個與平臺無關的接口(例如,interface PlatformStuff),那麼在每個特定於平臺的後端(例如,桌面或Android)中實現與特定於平臺的對象的接口(因此是class AndroidPlatformStuff implements PlatformStuff)。在構建它時,您可以將接口的平臺特定實現傳遞到通用代碼(例如,new MyGdxGame(new AndroidPlatformStuff())

調用更改活動和上下文的Android代碼可能需要更多工作(因爲它與libGDX 。基礎設施位),但也應該是可行的,您應該能夠使用教程整合爲廣告獲得的基本理念支持見http://code.google.com/p/libgdx/wiki/AdMobInLibgdxhttp://code.google.com/p/libgdx/wiki/ApplicationPlatformSpecific

0

你應該建立回撥; 創建接口和實現在android類上,然後將其傳遞給libgdx,當你需要調用相關的方法時。

0

首先,您應該在覈心文件夾中創建一個接口類。這通常放在你的遊戲類中。作爲例子,讓我們假設你的函數名會LoginFacebook()對稱爲ActionResolver

接口類的接口類

package com.mygdx.game; 

public interface ActionResolver { 
    public void LoginFacebook(); 

} 

現在在你的遊戲類,你應該有下面的構造:

public SpaceXplorerGame(ActionResolver actionResolver) 
{ 
    this.actionResolver = actionResolver; 
} 

現在在你的android文件夾中,在src - > com.mygdx.game.android(你的包名)中,你應該創建你的處理器類,在我的情況下稱爲ActionResolverAndroid

public class ActionResolverAndroid implements ActionResolver { 
    Handler handler; 
    Context context; 


    public ActionResolverAndroid(Context context) { 
     handler = new Handler(); 
     this.context = context; 
    } 

public void LoginFacebook() 
{ 
    handler.post(new Runnable() { 
     @Override 
     public void run() { 
      Intent intent = new Intent(context, LoginActivity.class); 
      context.startActivity(intent); 
     } 
    }); 

} 

}

現在要求從LibGdx功能LoginFacebook()將帶你到你LoginAcitivty.class在android系統。 希望我沒有錯過任何東西