[英]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.