2012-03-06 7 views
10

Có ai có bất kỳ mẹo nào về lưu trữ dữ liệu từ libGDX trên Android trong SQLite không. Tôi rất quen thuộc với các kỹ thuật được sử dụng trong Android SDK nhưng tôi không có bất kỳ ý tưởng làm thế nào để gọi những chức năng cơ sở dữ liệu Android từ libGDX. Tôi biết rằng việc gọi các hàm từ libGDX sẽ làm cho trò chơi của tôi không sử dụng được trên máy tính để bàn nhưng tôi có thể giải quyết vấn đề đó.Sử dụng SQLite từ libGDX trên Android

Trả lời

12

Một cách tiếp cận luôn là tạo giao diện trong dự án chính của bạn, hãy gọi nó là NativeFunctions. Sau đó, bạn cho phép cả máy tính để bàn và ứng dụng/hoạt động Android của bạn triển khai giao diện này. Khi tạo dự án chính của bạn, bạn sẽ vượt qua ứng dụng/hoạt động. Trong ứng dụng chính của bạn, bạn giữ tham chiếu đến giao diện được truyền và sử dụng chức năng này để gọi các hàm gốc, bạn có thể thực hiện riêng cho máy tính để bàn và Android (không làm cho trò chơi của bạn không sử dụng được trên máy tính để bàn, bạn cũng có thể sử dụng SQLite;).

Ok, đã được phức tạp, vì vậy chúng ta hãy xem nó trong hành động (xác định một chức năng để mở một URL):

Giao diện:

public interface NativeFunctions { 
    public void openURL(String url); 
} 

Các lớp học chính:

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"); 
    } 
} 

Triển khai 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); 
    } 
} 

Triển khai trên máy tính để bàn:

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 
    } 
} 

Đó là việc triển khai SQLite của bạn có thể giống nhau. Btw. Tôi nghĩ đó cũng là cách để tích hợp các hộp quảng cáo và nói chuyện với hệ thống nói chung.

+2

Tuyệt vời! Làm việc hoàn hảo! Đây là kiến ​​thức tốt để có nhiều tình huống. Cảm ơn đã giúp đỡ. Bạn dường như trả lời tất cả các câu hỏi của tôi gần đây haha. –

+2

Bạn được chào đón! Trên thực tế, tôi đang sử dụng LibGDX khá thường xuyên và khi stackoverflow đã trả lời rất nhiều câu hỏi của tôi, tôi rất sẵn lòng trao lại điều gì đó;). – dom