Использование SQLite из libGDX на Android - PullRequest
10 голосов
/ 06 марта 2012

У кого-нибудь есть советы по хранению данных из libGDX на Android в SQLite.Я хорошо знаком с методами, используемыми в Android SDK, но не знаю, как вызывать эти функции базы данных Android из libGDX.Я знаю, что вызов функций из libGDX сделает мою игру непригодной для использования на рабочем столе, но я справлюсь с этим.

1 Ответ

12 голосов
/ 06 марта 2012

Один из подходов всегда заключается в создании интерфейса в вашем основном проекте, назовем его 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, вероятно, должна идти таким же образом,Btw.Я думаю, что это также способ интеграции рекламных блоков и общения с системой в целом.

...