首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 遊戲 Activity 切換:SurfaceView 線程結束啟動 GameOver 頁面

     編輯:程式設計綜合問答

架構

  • FirstActivity:主菜單,啟動 GameActivity。
  • GameActivity:setContentView(new GameView(this)),GameView extends SurfaceView 運行遊戲循環線程。
  • GameOverActivity:結算頁面。

關鍵實現:GameActivity.onDestroy 啟動 GameOver


public class GameActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new GameView(this));
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        // 遊戲結束(生命值歸零等)時會調用 finish() 觸發 onDestroy
        startActivity(new Intent(this, GameOverActivity.class));
    }
}

GameView 結束遊戲


public class GameView extends SurfaceView implements Runnable {
    private volatile boolean running = true;

    public void run() {
        while (running) {
            // 遊戲邏輯...
            if (lives <= 0) {
                running = false;
                ((Activity) getContext()).finish(); // 觸發 GameActivity.onDestroy
            }
        }
    }
}

注意

  • running 用 volatile 保證線程可見性。
  • GameActivity 不要設置 noHistory,否則 onDestroy 後無法啟動新 Activity。
  • 3. 現代遊戲開發建議使用 GameEngine (LibGDX/Unity) 或 GameView 內部狀態機管理場景切換,避免頻繁 Activity 跳轉開銷。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved