Bài đăng phổ biến

Chủ Nhật, 4 tháng 11, 2012

Tạo và quản lý Scenes

Như tôi đã đề cập trong bài trước http://opengles-android.blogspot.com/2012/11/thiet-ke-game-cua-ban-usefull-concept.html Để dễ dàng hơn chỉ cần tạo 1 activity với nhiều Scenes thay vì nhiều Activitys để xử lý những phần khác nhau của game. Tôi sẽ tư vấn theo cách sử dụng những Scenes như thế này giống như tôi đã posted trong diagram ở previous tutorial.

Và bây giờ phát sinh câu hỏi, làm như thế nào để quản lý tốt Scenes? Tốt nhất là các bạn nên tạo Enum với các kiểu Scenes.

Ví dụ bạn cần 4 cảnh:


  1. Splash Screen  (Shown while loading resource)
  2. Menu Scene (Xuất hiện sau khi load resource)
  3. Option Scene
  4. Game Scene
Vì vậy hãy tạo Enum với các kiểu Scenes: Ví dụ

  1. public enum SceneType
  2.  {
  3.        SPLASH,
  4.        MENU,
  5.        OPTIONS,
  6.        GAME,
  7.  }
  8.  
  9.  public SceneType currentScene = SceneType.SPLASH;



Và sau đó trong khi lựa chọn các Scenes khác nhau, luôn luôn nhớ rằng để thay đổi kiểu Enum của Scene. vì vậy chúng ta theo dõi kiểu nào Scene hiện thời được biểu diễn, Ví dụ sau sẽ lựa chọn từ Splash Screen tới Menu Screen.

     mEngine.setScene(menuScene);
     currentScene = SceneType.MENU;


Chúng ta có thể viết đè onKeyDown để dễ dàng điều khiển lựa chọn các Scenes trong khi phím Back được nhấn:


  1. @Override
  2. public boolean onKeyDown(int keyCode, KeyEvent event)
  3. {  
  4.      if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() ==KeyEvent.ACTION_DOWN)
  5.      {          
  6.           switch (currentScene)
  7.           {
  8.                case SPLASH:
  9.               break;
  10.                case MENU:
  11.                     System.exit(0);
  12.                     break;
  13.                case OPTIONS:
  14.                     mEngine.setScene(menuScene);
  15.                     currentScene = SceneType.MENU;
  16.                     break;
  17.                case GAME:
  18.                     mEngine.setScene(gameScene);
  19.                     currentScene = SceneType.MENU;
  20.                     break; 
  21.           }
  22.      }
  23.      return false;
  24. }

Đoạn code trên thực hiện những gì? nó kiểm tra nut Back được nhấn, và lựa chọn giữa các Scenes (Phụ thuộc trên những cảnh hiện thời) và trong trường hợp này:

  • Trong khi game đang loading (Splash Screen) thì không thực hiện sự kiện gì cả
  • Khi ở trong Menu Scenes, chúng ta đơn giản thoát từ game
  • Khi nó ở trong lựa chọn Options Scene, chúng ta lựa chọn trở lại tới Menu Scene
  • khi nó ở trong Game Scenes. giống như ở trên. 


Với cách này chúng ta dễ dàng theo dõi các Scenes. và lựa chọn chúng cho activity cuối cung.







Không có nhận xét nào:

Đăng nhận xét