2025-02-17

背景
SurfaceView是遊戲開發中經常使用到的View,能夠實時的更新UI界面,實現遊戲邏輯。在這裡的討論中,我設定瞭一個GameActivity , 在這個activity的佈局中,放置瞭一個全屏的GameSurfaceView。GameActivity雖然是遊戲的主體,但遊戲的邏輯和顯示都是由GameSurfaceView負責。遊戲開始後,GameSurfaceView在新開的線程中運行,並即時的更新遊戲界面。
當遊戲邏輯結束時,需要結束掉activity,以使得activity stack順序清晰。特別是在2.2系統下,不能一次性關閉app,隻能每次都關閉掉各個acticity。

實現
如何在GameSurfaceView中結束掉這個activity呢?
增加回調接口,在GameSurfaceView中實現回調!
關於回調的介紹: callback。
1,設定一個回調接口
 
public interface OnEndOfGameInterface { 
    public void onEndOfGame(); 
     

在GameActivity中實現這個接口。
 
public class GameActivity extends Activity implements OnEndOfGameInterface   { 
//…. 
@Override 
    public void onEndOfGame() {      
        this.finish(); 
    } 

在GameSurfaceView中定義回調類型的成員。 並定義一個public method 用來設置回調成員為GameActivity。
 
protected OnEndOfGameInterface mOnEndOfGame ; //callback interface 
 
public void setOnEndOfGame(OnEndOfGameInterface xOnEndOfGame){ 
        mOnEndOfGame = xOnEndOfGame; 
    } 
     

GameActivity中,開啟GameSurfaceView的同時,必須調用setOnEndOfGame方法,設定好回調。
view plain
mGameSurfaceView = (ReverseGameSurfaceView) findViewById(R.id.reverse_game_surface_view); 
            mGameSurfaceView.setOnEndOfGame(this);  //傳入this,設定自己為回調目標 
            mGameSurfaceView.setMode(GameBasicSurfaceView.RUNNING); 

如此,當GameSurfaceView結束時,就可以調用onEndOfGame方法,實現回調瞭!

摘自:BIAOBIAOqi的小巢

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *