簡體   English   中英

如何將當前的SurfaceView傳遞給其他對象方法?

[英]How can I pass the current SurfaceView into other object methods?

我正在嘗試制作我的第一個Android游戲,實際上只是一個pong克隆,我有一個擴展SurfaceView的“ PongView”類,這是我唯一的視圖。 它具有我的“球”和“槳”類的對象。 我剛剛開始將與諸如牆壁碰撞檢測之類的事情相關的代碼移到Ball和Paddle類中,以整理一下主視圖,並意識到我需要給這些類提供一種了解視圖寬度和高度的方式。 目前,我的工作只是在surfaceviews surfaceChanged方法內部初始化一個全局變量,該方法存儲視圖的寬度和高度,如下所示:

//at the top of my class
private int viewWidth;
private int viewHeight;
..

@Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width,
            int height) {

        //INITIALISE viewWidth and viewHeight here
        //so that they can be passed as parameters
        viewWidth = getWidth();
        viewHeight = getHeight();

        //some other irrelevant code here
    }

然后我將它們作為參數傳遞:

ball.handleWallCollision(viewWidth, viewHeight);

但是我不確定這是解決問題的方法,因為我想我經常需要通過它們。 我認為如果每個班級都擁有當前PongView的副本會更好一些? 但是我不確定這是否正確,或者如何/何時獲得它。

你會推薦什么? 謝謝

使用用於在活動中設置視圖的表面視圖類的對象。該對象是活動的,將包含有關該表面視圖的所有更改

SurfaceView sur=new SurfaceView(this);  /// you created object
setContentView(sur);
//you do your work
//surface view is running

現在您要退出該活動。然后在onDestroy()中使用CommonClass.ObjectVraible = sur;。

這條線將保存Surfaceview的當前狀態

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM