10
有沒有人有任何提示在Android上在SQLite中存儲來自libGDX的數據。我非常熟悉Android SDK中使用的技術,但我不知道如何從libGDX調用這些Android數據庫函數。我知道從libGDX調用函數會讓我的遊戲在桌面上無法使用,但是我可以處理它。從Android上的libGDX使用SQLite
有沒有人有任何提示在Android上在SQLite中存儲來自libGDX的數據。我非常熟悉Android SDK中使用的技術,但我不知道如何從libGDX調用這些Android數據庫函數。我知道從libGDX調用函數會讓我的遊戲在桌面上無法使用,但是我可以處理它。從Android上的libGDX使用SQLite
一種方法總是在您的主項目中創建一個接口,我們將其稱爲NativeFunctions
。然後,讓您的桌面和Android應用程序/活動都實現此界面。在創建主項目時,您可以一起傳遞應用程序/活動。在你的主應用程序中,你保留對傳入接口的引用,並用它來調用本地函數,你可以分別爲桌面和Android實現本地函數(不要讓你的遊戲在桌面上無法使用,你也可以在那裏使用SQLite)。
好吧,這很複雜,所以讓我們看看它在行動(定義一個函數來打開一個URL):
接口:
public interface NativeFunctions {
public void openURL(String url);
}
主類:
public class MyGame extends Game/ApplicationListener {
public NativeFunctions mNativeFunctions;
public MyGame(NativeFunctions nativeFunctions) {
mNativeFunctions = nativeFunctions;
}
// Exemplary function call, of course this doesn't make sense in render() ;)
public void render() {
mNativeFunctions.openURL("http://www.example.com");
}
}
Android實現:
public class MyGameActivity extends AndroidApplication implements NativeFunctions {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initialize(new MyGame(this), false);
}
public void openURL(String url) {
Intent viewIntent = new Intent("android.intent.action.VIEW",
Uri.parse(url));
startActivity(viewIntent);
}
}
桌面實現:
public class MyGameDesktop implements NativeFunctions {
public static void main(String[] args) {
MyGameDesktop game = new MyGameDesktop();
new LwjglApplication(new MyGame(game), "MyGame", 800,
480, false);
}
public void openURL(String url) {
// Your implementation to open URL on dekstop
}
}
就是這樣,你的實現使用SQLite大概應該是沿着同樣的方式。順便說一句。我認爲這也是整合廣告框並與整個系統交流的方式。
太棒了!完美工作!這對許多情況都是很好的知識。謝謝您的幫助。你似乎最近都在回答我所有的問題。 – 2012-03-07 00:25:29
不客氣!實際上,我經常使用LibGDX,因爲stackoverflow已經回答了很多我很高興回饋的問題;)。 – dom 2012-03-07 14:27:41